Това е добър случай за използване на IDENTITY иВИРТУАЛЕН колони. Така че няма нужда от допълнителна ПОСЛЕДОВАТЕЛНОСТ и ТРИГЕР .
Демо:
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);
Резултат:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Как работи:
NUMBER GENERATED ALWAYS AS IDENTITY
:Това автоматично създава необходимата последователност за вас, започва с 1 и се увеличава с 1 по подразбиране.GENERATED ALWAYS AS VIRTUAL
:Това създава виртуална колона, чиито стойности се изчисляват автоматично, като се използват други стойности на колони. В тази демонстрация той използва колоната за самоличност.LPAD
:Това ще гарантира, че нулите остават подплатени, докато стойността на колоната се увеличава, но също така ще гарантира, че когато числото се увеличава, то няма да увеличи дължината на низа.CONCAT
:Това ще свържеTNT
до горната стойност.