Detta är ett bra användningsfall för IDENTITY och VIRTUELL kolumner. Så, inget behov av en ytterligare SEKVENS och 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);
Resultat:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Hur det fungerar:
NUMBER GENERATED ALWAYS AS IDENTITY
:Detta skapar automatiskt den önskade sekvensen åt dig, börjar med 1 och ökar med 1 som standard.GENERATED ALWAYS AS VIRTUAL
:Detta skapar en virtuell kolumn vars värden beräknas automatiskt med andra kolumnvärden. I denna demo använder den identitetskolumnen.LPAD
:Detta kommer att säkerställa att nollor lämnas utfyllda medan kolumnvärdet ökas, men kommer också att säkerställa att när numret ökas det inte ökar längden på strängen.CONCAT
:Detta sammankopplarTNT
till över värde.