C'est un bon cas d'utilisation pour IDENTITY et VIRTUELLE Colonnes. Donc, pas besoin d'une SÉQUENCE supplémentaire et TRIGGER .
Démo :
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);
Résultat :
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Comment ça marche :
NUMBER GENERATED ALWAYS AS IDENTITY
:Cela crée automatiquement la séquence requise pour vous, commence par 1 et incrémente de 1 par défaut.GENERATED ALWAYS AS VIRTUAL
:cela crée une colonne virtuelle dont les valeurs sont calculées automatiquement à l'aide d'autres valeurs de colonne. Dans cette démo, il utilise la colonne d'identité.LPAD
:Cela garantira que les zéros restent remplis pendant que la valeur de la colonne est incrémentée, mais garantira également que lorsque le nombre est incrémenté, il n'augmente pas la longueur de la chaîne.CONCAT
:Cela concaténeraTNT
à la valeur ci-dessus.