Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL Server

SEQUENCE (Dãy số) trong SQL Server

Mô tả

Sequence là dãy số nguyên có thứ tự, thường dùng tạo giá trị duy nhất cho khóa chính (tự động tăng) thay cho IDENTITY.

Tạo Sequence (CREATE SEQUENCE)

CREATE SEQUENCE [schema.] ten_sequence
[AS kieu_du_lieu]
[START WITH gia_tri_khoi_dau]
[INCREMENT BY gia_tri_buoc_nhay]
[MINVALUE gia_tri_min | NO MINVALUE]
[MAXVALUE gia_tri_max | NO MAXVALUE]
[CYCLE | NO CYCLE]
[CACHE gia_tri_cache | NO CACHE];

Tham số:

  • AS kieu_du_lieu: BIGINT, INT, TINYINT, SMALLINT, DECIMAL, NUMERIC (mặc định BIGINT).
  • START WITH: Giá trị đầu tiên.
  • INCREMENT BY: Bước nhay (dương = tăng, âm = giảm).
  • MINVALUE / NO MINVALUE: Giá trị nhỏ nhất / không giới hạn.
  • MAXVALUE / NO MAXVALUE: Giá trị lớn nhất / không giới hạn.
  • CYCLE: Quay lại đầu khi hết dãy.
  • NO CYCLE: Dừng lại khi hết dãy (mặc định).
  • CACHE: Số giá trị lưu cache để giảm I/O đĩa.
  • NO CACHE: Không cache.

Ví dụ

CREATE SEQUENCE contacts_seq
AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999
NO CYCLE
CACHE 10;

Dãy contacts_seq: bắt đầu 1, tăng 1, max 99999, không lặp, cache 10 giá trị.

Rút gọn (tự động mặc định):

CREATE SEQUENCE contacts_seq
START WITH 1
INCREMENT BY 1;

Lấy giá trị tiếp theo (NEXT VALUE FOR)

SELECT NEXT VALUE FOR contacts_seq;

Sử dụng trong INSERT

INSERT INTO contacts (contact_id, last_name)
VALUES (NEXT VALUE FOR contacts_seq, 'Smith');

Xóa Sequence (DROP SEQUENCE)

DROP SEQUENCE ten_sequence;
DROP SEQUENCE contacts_seq;

Xem thuộc tính Sequence

SELECT *
FROM sys.sequences
WHERE name = 'ten_sequence';

Các cột quan trọng: name, start_value, increment, minimum_value, maximum_value, is_cycling, is_cached, cache_size, current_value, is_exhausted...