Computer >> Máy Tính >  >> Lập trình >> SQL Server

SEQUENCE trong SQL Server

Trình tự là một tập hợp các số nguyên được sắp xếp theo thứ tự. Chuỗi thường được sử dụng trong cơ sở dữ liệu vì đáp ứng yêu cầu của nhiều ứng dụng là yêu cầu mỗi hàng trong bảng phải chứa một giá trị duy nhất tương tự như khóa chính.

Bài viết sẽ cung cấp cho bạn cú pháp và ví dụ về cách tạo và xóa chuỗi trong SQL Server.

TẠO DÒNG (Tạo trình tự)

Cú pháp

Để tạo một chuỗi, chúng ta có cú pháp sau:

  CREATE SEQUENCE [schema.] Sequence_name 
[AS datatype]
[START WITH value]
[INCREMENT BY value]
[MINVALUE value | NO MINVALUE]
[MAXVALUE value | NO MAXVALUE]
[CYCLE | NO CYCLE]
[CACHE value | NO CACHE];

Thông số:

  1. AS kiểu dữ liệu: có thể là các loại BIGINT, INT, TINYINT, SMALLINT, DECIMAL hoặc NUMERIC. Nếu bạn không chỉ định một loại cụ thể, chương trình sẽ đặt mặc định cho loại dữ liệu của bạn ở dạng BIGINT.
  2. BẮT ĐẦU VỚI giá trị: Giá trị mà chuỗi trả về.
  3. TĂNG THEO giá trị :Một chuỗi quy tắc tăng / giảm thứ tự, có thể dương hoặc âm. Nếu giá trị ở đây là dương, chuỗi sẽ là một chuỗi các giá trị tăng dần. Ngược lại là số âm, trình tự sẽ giảm.
  4. Giá trị MINVALUE :Giá trị nhỏ nhất trong chuỗi.
  5. KHÔNG CÓ MINVALUE :Không chỉ định giá trị nhỏ nhất.
  6. Giá trị MAXVALUE :Giá trị lớn nhất trong chuỗi.
  7. KHÔNG CÓ MAXVALUE :Không chỉ định giá trị lớn nhất.
  8. CHU KỲ :Trình tự sẽ bắt đầu lại từ đầu khi hoàn thành trình tự.
  9. KHÔNG CHU KỲ :Chuỗi sẽ bị lỗi ở cuối chuỗi, nó sẽ không bắt đầu lại khi hoàn thành.
  10. Giá trị CACHE: Lưu vào bộ nhớ đệm (cache) để giảm thiểu IO trên đĩa.
  11. KHÔNG CÓ: Không lưu trong bộ nhớ đệm.

Ví dụ

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

Ở đây chúng tôi đã tạo một chuỗi có tên là contact_seq , bắt đầu từ giá trị 1, mỗi giá trị sau đây tăng một đơn vị (tức là 2, 3, 4.). Chuỗi sẽ lưu trữ khoảng 10 giá trị vào bộ nhớ đệm. Giá trị lớn nhất trong chuỗi là 99999 và nó sẽ không khởi động lại chuỗi sau khi chuỗi kết thúc ở giá trị lớn nhất.

Bạn cũng có thể thực hiện lệnh trên một cách đơn giản như sau:

  CREATE SEQUENCE contacts_seq 
START WITH 1
INCREMENT BY 1;

Vì vậy, bây giờ bạn đã tạo một chuỗi mô phỏng trường đánh số tự động. Tiếp theo, để xuất giá trị từ chuỗi này, chúng tôi sử dụng GIÁ TRỊ TIẾP THEO CHO lệnh

  SELECT NEXT VALUE FOR contacts_seq; 

Câu lệnh này sẽ truy xuất giá trị tiếp theo từ contact_seq. Sau đó, sử dụng các lệnh cần thiết để thực hiện của bạn. Ví dụ:

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

Câu lệnh INSERT này sẽ chèn một bản ghi mới vào bảng liên hệ. contact_id trường sẽ được chỉ định số tiếp theo từ contact_seq, the last_name trường sẽ là 'Smith'.

DROP SEQUENCE (Xóa trình tự)

Khi một chuỗi đã được tạo, cũng sẽ có trường hợp bạn muốn xóa chuỗi khỏi cơ sở dữ liệu vì một số lý do.

Cú pháp

Để xóa một chuỗi, chúng ta có cú pháp sau:

  DROP SEQUENCE sequence_name; 

Thông số:

tên_mạch: Tên trình tự bạn muốn xóa.

Ví dụ

  DROP SEQUENCE contacts_seq; 

Bằng cách thực thi lệnh này, bạn vừa loại bỏ danh_sách_tiếp_tính chuỗi từ cơ sở dữ liệu.

Thuộc tính trình tự

Để kiểm tra các thuộc tính trình tự, chúng ta có cú pháp sau:

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

Thông số:

serial_name:The tên của chuỗi để kiểm tra thuộc tính.

Ví dụ

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

Ví dụ này truy vấn thông tin từ sys.sequences hệ thống và truy xuất kết quả cho contact_seq chuỗi .

Sys.sequences hệ thống bao gồm các cột sau:

BỘ SƯU TẬP LƯU Ý tên của trình tự được tạo trong câu lệnh CREATE SEQUENCE object_id ID của đối tượng major_id của ID trình tự chính (giá trị số) schema_id ID giản đồ của trình tự parent_object_id ID của loại đối tượng chính SO type_desc SEQUENCE_OBJECT create_date Ngày / giờ được tạo chuỗi với CREATE SEQUENCE lệnh edit_date Ngày / Giờ của chuỗi sửa đổi cuối cùng is_ms_shipped Giá trị 0 hoặc 1 is_published Giá trị 0 hoặc 1 is_schema_published Giá trị 0 hoặc 1 start_value Giá trị bắt đầu của chuỗi tăng dần Giá trị quy tắc của chuỗi tăng / giảm Minimum_value Giá trị nhỏ nhất trong chuỗi Maximum_value Giá trị lớn nhất trong chuỗi is_cycling 0 hoặc 1. 0 =NO CYCLE, 1 =CYCLE is_cached Giá trị 0 hoặc 1, 0 =NO CACHE, 1 =CACHE cache_size Bộ đệm kích thước bộ nhớ khi is_cached =1 system_type_id ID hệ thống của chuỗi user_type_id ID lo lắng về trình tự chính xác người dùng Độ chính xác tối đa cho dữ liệu loại thang đo phạm vi tối đa cho chuỗi giá_trị_ngày trình tự Giá trị cuối cùng được truy xuất từ ​​trình tự is_exhausted Giá trị 0 hoặc 1. 0 =Nhiều giá trị theo thứ tự. 1 =Không có giá trị