Trong bài đăng trên blog ngày hôm qua, tôi đã viết về cách tạo một bảng có giá trị IDENTITY. Nhưng tính năng mới của Oracle 12c mà tôi thích hơn là cho phép một chuỗi làm trình tạo số cho giá trị mặc định của một cột. Để hiểu ý tôi, hãy xem ví dụ sau:
SQL> create sequence test_seq; Sequence created. SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20)); Table created.
Như bạn có thể thấy, cột ID của bảng thử nghiệm của tôi có mệnh đề DEFAULT sử dụng NEXTVAL của chuỗi tôi đã tạo. Bây giờ chúng ta hãy chèn một số dữ liệu vào bảng.
SQL> insert into test_tab (val) values ('first row'); 1 row created. SQL> insert into test_tab (val) values ('second row'); 1 row created. SQL> commit; Commit complete. SQL> select * from test_tab; ID VAL ---------- -------------------- 1 first row 2 second row
Như bạn có thể thấy, chuỗi Oracle đã được sử dụng để điền các giá trị. Thoạt nhìn, điều này sẽ giúp người lập mô hình dữ liệu dễ dàng hơn vì người ta sẽ không cần phải đi theo con đường truyền thống là mã hóa trình kích hoạt để tạo NEXTVAL và gán giá trị này cho cột. Tuy nhiên, tính năng tự động mô phỏng giá trị cột với chuỗi này chỉ hoạt động nếu bạn không chỉ định giá trị, nếu bạn để nó mặc định. Nếu bạn nêu rõ giá trị, phương thức này sẽ không sử dụng trình tự. Một trình kích hoạt, nếu được mã hóa đúng cách, sẽ buộc sử dụng giá trị tiếp theo của trình tự cho cột.