Dies ist ein guter Anwendungsfall für IDENTITY und VIRTUELL Säulen. Es ist also keine zusätzliche SEQUENCE erforderlich und 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);
Ergebnis:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Wie es funktioniert:
NUMBER GENERATED ALWAYS AS IDENTITY
:Dies erstellt automatisch die erforderliche Sequenz für Sie, beginnt mit 1 und erhöht sich standardmäßig um 1.GENERATED ALWAYS AS VIRTUAL
:Dadurch wird eine virtuelle Spalte erstellt, deren Werte automatisch anhand anderer Spaltenwerte berechnet werden. In dieser Demo wird die Identitätsspalte verwendet.LPAD
:Dadurch wird sichergestellt, dass Nullen aufgefüllt bleiben, während der Spaltenwert erhöht wird, aber es wird auch sichergestellt, dass die Länge der Zeichenfolge nicht erhöht wird, wenn die Zahl erhöht wird.CONCAT
:Dies wirdTNT
verketten auf über dem Wert.