Este es un buen caso de uso para IDENTIDAD y VIRTUAL columnas Por lo tanto, no se necesita una SECUENCIA adicional y DISPARADOR .
Demostración:
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);
Resultado:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Cómo funciona:
NUMBER GENERATED ALWAYS AS IDENTITY
:Esto crea automáticamente la secuencia requerida para usted, comienza con 1 y se incrementa en 1 de manera predeterminada.GENERATED ALWAYS AS VIRTUAL
:Esto crea una columna virtual cuyos valores se calculan automáticamente utilizando otros valores de columna. En esta demostración, utiliza la columna de identidad.LPAD
:Esto garantizará que los ceros se dejen rellenos mientras se incrementa el valor de la columna, pero también garantizará que cuando se incremente el número no aumente la longitud de la cadena.CONCAT
:Esto conectaráTNT
al valor anterior.