あなたの数は制限されていません。 1桁の(正の)数字であなた 連結された長さは3つまでですが、仮想列は任意の数に対して十分な大きさである必要があることを知っています。したがって、暗黙の形式モデルでは最大40桁(有効数字38桁、小数点、および符号)を許可しているように見えます。 @collsparの字句化 。
そうは言っても、数値列の制約は仮想列の長さに反映されません-両方の列をNUMBER(1,0)
にします まだ81文字を必要とする連結を残します。生成された値の部分文字列を取得するORA-12899: value too large for column "TEXT" (actual: 10, maximum: 40)
。各to_char()
のフォーマットモデルを提供する 呼び出し、例えばFM999
の )、機能しますが、全長を直接制限するのではなく、アンダースコアの両側の値を制限します。
列のサイズを制限する場合は、同じデータ型とサイズにキャストできます。これはより明確です。
text VARCHAR2(10) generated always as
(cast(to_char(id)||'_'||to_char(num) as VARCHAR2(10))) VIRTUAL