SEQUENCE và NEXTVAL - Tạo khóa chính tăng tự động

2022-11-02 21:51:53

Oracle sử dụng khái niệm SEQUENCE để tạo các giá trị khóa chính dạng số khi chúng ta thêm các hàng dữ liệu vào bảng. Trong khi tập hợp khóa chính bằng số cho MySQL và SQL Server được liên kết với các bảng riêng lẻ, thì trong Oracle, cấu trúc SEQUENCE được tạo riêng biệt và không gắn với một bảng riêng lẻ.

Cú pháp

Cú pháp để tạo một chuỗi trong Oracle là:

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Giá trị ban đầu} là giá trị bắt đầu của dãy, và {khoảng} là khoảng thời gian giữa các dãy số liên tiếp. Cả [BẮT ĐẦU VỚI] và [TĂNG BẰNG] đều là các trường tùy chọn. Nếu chúng không được chỉ định, mặc định {Initial_Value} và {khoảng thời gian} đều là 1.

Ví dụ

Giả sử chúng ta có một bảng với cấu trúc sau:

Bảng USER_TABLE

 Column Name  Data Type 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

và chúng tôi muốn sử dụng trình tự sau để tạo userid:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

Chúng tôi chỉ định rằng chúng tôi muốn sử dụng trình tự và hàm NEXTVAL trong các câu lệnh INSERT INTO theo thứ tự sau:

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

Bây giờ bảng có hai hàng sau:

Bảng USER_TABLE

 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Điều đáng chú ý là một trình tự độc lập với một bảng. Nói cách khác, một trình tự có thể được sử dụng để tạo các giá trị khóa chính cho nhiều bảng và trình tự tiếp tục ngay cả khi nó đang được áp dụng cho một bảng khác. Vì vậy, giả sử chúng ta có một bảng thứ hai, Bảng NEW_USERS , có cấu trúc tương tự như bảng USER_TABLE và chúng tôi phát hành lệnh SQL sau sau khi thực hiện hai lệnh SQL ở trên:

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

Bảng NEW_USER sẽ có hàng sau:

Bảng NEW_USER

 Userid  Last_Name  First_Name 
 15  Adams  John 

Userid là 15 vì đó là giá trị tiếp theo sau 10.



Xem thêm:


Chia sẻ:

Bài viết liên quan