Cách tạo sequence
Ý nghĩa:
- Sequence là danh sách tuần tự của con số, và được tạo bởi Oracle sever. Sequence dùng để tạo khóa chính một cách tự động cho dữ lệu.
- Sequence thường dùng để tạo khóa chính trong sinh mã tự động. Có thể dùng chung cho nhiều đối tượng. Con số sequence này có chiều dài tối đa là 38 số.
Cách tạo:
- Để tạo sequence, dùng lệnh CREATE SEQUENCE. Cú pháp:
CREATE SEQUENCE sequence_name INCREMENT BY integer START WITH integer [MAXVALUE integer] [MINVALUE integer] [CYCLE/NO CYCLE];
- Với:
- INCREMENT BY: Chỉ định khoảng cách của dãy số tuần tự.
- START WITH: Chỉ định số đầu tiên của dãy số tuần tự.
- MAXVALUE: Giá trị lớn nhất của dãy tuần tự.
- MINVALUE: Giá trị nhỏ nhất của dãy tuần tự.
- CYCLE/NO CYCLE: Dãy tuần tự có quay vòng khi đến điểm cuối. Mặc định là NO CYCLE.
- Ví dụ:
CREATE SEQUENCE sample_sequence INCREMENT 1 STRAT WITH 2 MAXVALUE 100;
- Để làm việc với sequence, dùng SQL làm việc với các cột giả sau:
- CURRVAL: Cho giá trị hiện tại của sequence. VD: sequence.CURRVAL
- NEXTVAL: Tăng giá trị hiện tại của sequence. VD: sequence.NEXTVAL
- Để truy cập các sequence không thuộc schema hiện thời, thì phải chỉ ra tên schema:
- schema.sequence.CURRVAL
- schema.sequence.NEXTVAL
- Để truy cập các sequence từ xa, thì còn phải chỉ ra datalink:
- schema.sequence.CURRVAL@dblink
- schema.sequence.NEXTVAL@dblink
Sử dụng sequence
CURRVAL và NEXTVAL có thể được sử dụng trong các trường hợp sau:
- Trong danh sách lựa chọn của câu lệnh SELECT
- Trong mệnh đề VALUES của câu lệnh INSERT
- Trong mệnh đề SET của câu lệnh UPDATE
- Không được sử dụng CURRVAL và NEXTVAL trong các trường hợp sau
- Trong câu hỏi con
- Trong các view và snapshot
- Trong câu lệnh SELECT có tác tử DISTINCT
- Trong câu lệnh SELECT có sử dụng GROUP BY hay ORDER BY
- Trong câu lệnh SELECT có sử dụng các phép toán tập hợp như UNION, INTERSET, MINUS
- Trong mệnh đề WHERE của câu lệnh SELECT
- Gía trị DEFAULT của cột trong câu lệnh CREATE TABLE hay ALTER TABLE
- Trong điều kiện của ràng buộc CHECK
Thay đổi và huỷ sequence
- Thay đổi sequence:
ALTER SEQUENCE sequence_name INCREMENT BY integer START WITH integer [MAXVALUE integer] [MINVALUE integer] [CYCLE/NO CYCLE];
- Huỷ sequence:
DROP SEQUENCE sequence_name ;