Dit is een goede use case voor IDENTITY en VIRTUEEL kolommen. Dus geen extra SEQUENTIE . nodig en TRIGGER .
Demo:
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);
Resultaat:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Hoe het werkt:
NUMBER GENERATED ALWAYS AS IDENTITY
:Dit creëert automatisch de vereiste reeks voor u, begint met 1 en wordt standaard met 1 verhoogd.GENERATED ALWAYS AS VIRTUAL
:Hiermee wordt een virtuele kolom gemaakt waarvan de waarden automatisch worden berekend met behulp van andere kolomwaarden. In deze demo wordt de identiteitskolom gebruikt.LPAD
:Dit zorgt ervoor dat nullen worden opgevuld terwijl de kolomwaarde wordt verhoogd, maar zorgt er ook voor dat wanneer het getal wordt verhoogd, dit de lengte van de tekenreeks niet vergroot.CONCAT
:Dit zalTNT
. samenvoegen tot boven de waarde.