Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL tự động tạo PK gia tăng VARCHAR

Đây là một trường hợp sử dụng tốt cho IDENTITY VIRTUAL cột. Vì vậy, không cần thêm SEQUENCE 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:

  1. 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.
  2. 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.
  3. 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.
  4. CONCAT :Điều này sẽ khớp với TNT lên giá trị trên.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể tham gia giữa các nguồn dữ liệu trong SSRS không?

  2. Tôi phải viết một truy vấn rất thú vị để tính toán các giá trị rỗng và các hàng có giá trị

  3. Oracle SQL - Truy vấn để tính toán các giá trị từ nhiều bảng

  4. Cách sử dụng các hàm Phân tích trong oracle (Over Partition theo Keyword)

  5. Lấy min () của cột đếm (*)