これは、 IDENTITYの適切な使用例です。 および仮想 列。したがって、追加のシーケンスは必要ありません。 およびトリガー 。
デモ:
CREATE TABLE sample (
serial_no NUMBER GENERATED ALWAYS AS IDENTITY,
tnt_id GENERATED ALWAYS AS (CONCAT('TNT', LPAD(serial_no, 5, '0'))) VIRTUAL,
wtv NUMBER(3)
);
insert into sample (wtv) values(100);
insert into sample (wtv) values(200);
insert into sample (wtv) values(300);
結果:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
仕組み:
NUMBER GENERATED ALWAYS AS IDENTITY
:これにより、必要なシーケンスが自動的に作成され、1から始まり、デフォルトで1ずつ増加します。GENERATED ALWAYS AS VIRTUAL
:これにより、他の列値を使用して値が自動的に計算される仮想列が作成されます。このデモでは、ID列を使用します。-
LPAD
:これにより、列の値がインクリメントされている間、ゼロが埋め込まれたままになりますが、数値がインクリメントされたときに文字列の長さが増加しないことも保証されます。 -
CONCAT
:これはTNT
を連結します 上記の値に。