Đây là một trường hợp sử dụng tốt cho IDENTITY và VIRTUAL cột. Vì vậy, không cần thêm SEQUENCE và 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);
Kết quả:
select * from sample;
SERIAL_NO TNT_ID WTV
---------- ----------------------- ----------
1 TNT00001 100
2 TNT00002 200
3 TNT00003 300
Cách hoạt động:
-
NUMBER GENERATED ALWAYS AS IDENTITY
:Điều này tự động tạo chuỗi bắt buộc cho bạn, bắt đầu bằng 1 và tăng dần theo 1 theo mặc định. -
GENERATED ALWAYS AS VIRTUAL
:Thao tác này tạo một cột ảo có giá trị được tính toán tự động bằng cách sử dụng các giá trị cột khác. Trong bản trình diễn này, nó sử dụng cột nhận dạng. -
LPAD
:Điều này sẽ đảm bảo các số 0 được để trống trong khi giá trị cột được tăng lên, nhưng cũng sẽ đảm bảo rằng khi số được tăng lên, nó không làm tăng độ dài của chuỗi. -
CONCAT
:Điều này sẽ khớp vớiTNT
lên giá trị trên.