Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

SEQUENCE (ลำดับ) ใน SQL Server

Sequence (ลำดับ) คือชุดจำนวนเต็มที่จัดเรียงตามลำดับ Sequences มักใช้ในฐานข้อมูลเพราะความต้องการของหลายแอปพลิเคชันต้องการให้แต่ละแถวในตารางมีค่าเฉพาะเจาะจงคล้าย Primary Key

บทความนี้จะให้ไวยากรณ์และตัวอย่างวิธีสร้างและลบ Sequence ใน SQL Server

CREATE SEQUENCE (สร้าง Sequence)

ไวยากรณ์

การสร้าง Sequence มีไวยากรณ์ดังนี้:

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];

พารามิเตอร์:

  1. AS datatype: อาจเป็น BIGINT, INT, TINYINT, SMALLINT, DECIMAL, หรือ NUMERIC หากไม่ระบุชนิดเฉพาะ โปรแกรมจะใช้ BIGINT เป็นค่าเริ่มต้น
  2. START WITH value: ค่าที่ Sequence คืนค่าแรก
  3. INCREMENT BY value: กฎการเพิ่ม/ลดของ Sequence อาจเป็นบวกหรือลบ หากค่าบวก Sequence จะเพิ่มขึ้น ตรงข้ามถ้าเป็นลบ Sequence จะลดลง
  4. MINVALUE value: ค่าน้อยที่สุดในลำดับ
  5. NO MINVALUE: ไม่ระบุค่าต่ำสุด
  6. MAXVALUE value: ค่าสูงสุดในลำดับ
  7. NO MAXVALUE: ไม่ระบุค่าสูงสุด
  8. CYCLE: Sequence จะเริ่มใหม่เมื่อครบลำดับ
  9. NO CYCLE: Sequence จะล้มเหลวเมื่อจบลำดับ ไม่เริ่มใหม่เมื่อครบ
  10. CACHE value: เก็บในแคช (cache) เพื่อลด disk I/O
  11. NO CACHE: ไม่เก็บในแคช

ตัวอย่าง

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

ที่นี่เราสร้าง Sequence ชื่อ contacts_seq เริ่มจากค่า 1 ค่าถัดไปเพิ่มขึ้นทีละ 1 (คือ 2, 3, 4...) ลำดับจะเก็บประมาณ 10 ค่าในแคช ค่าสูงสุดคือ 99999 และจะไม่เริ่มลำดับใหม่หลังจบที่ค่าสูงสุด

คุณสามารถรันคำสั่งด้านบนอย่างง่ายได้ดังนี้:

CREATE SEQUENCE contacts_seq
START WITH 1
INCREMENT BY 1;

ตอนนี้คุณสร้าง Sequence ที่จำลองฟิลด์ autonumber แล้ว ต่อไป เพื่อดึงค่าจาก Sequence นี้ ใช้คำสั่ง NEXT VALUE FOR

SELECT NEXT VALUE FOR contacts_seq;

คำสั่งนี้จะดึงค่าถัดไปจาก contacts_seq จากนั้นใช้คำสั่งที่จำเป็นสำหรับการทำงานของคุณ เช่น:

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

คำสั่ง INSERT นี้แทรกระเบียนใหม่เข้าไปในตาราง contacts ฟิลด์ contact_id จะได้รับหมายเลขถัดไปจาก contacts_seq ฟิลด์ last_name จะเป็น 'Smith'

DROP SEQUENCE (ลบ Sequence)

หลังจากสร้าง Sequence แล้ว จะมีกรณีที่ต้องการลบ Sequence ออกจากฐานข้อมูลด้วยเหตุผลบางอย่าง

ไวยากรณ์

การลบ Sequence มีไวยากรณ์ดังนี้:

DROP SEQUENCE sequence_name;

พารามิเตอร์:

sequence_name: ชื่อ Sequence ที่ต้องการลบ

ตัวอย่าง

DROP SEQUENCE contacts_seq;

การรันคำสั่งนี้จะลบ contacts_seq ออกจากฐานข้อมูล

คุณสมบัติของ Sequence

เพื่อตรวจสอบคุณสมบัติของ Sequence มีไวยากรณ์ดังนี้:

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

พารามิเตอร์:

sequence_name: ชื่อลำดับที่ต้องการตรวจสอบคุณสมบัติ

ตัวอย่าง

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

ตัวอย่างนี้สืบค้นข้อมูลจากระบบ sys.sequences และดึงผลลัพธ์สำหรับลำดับ contacts_seq

ระบบ sys.sequences ประกอบด้วยคอลัมน์ต่อไปนี้: name, object_id, principal_id, schema_id, parent_object_id, type, type_desc, create_date, modify_date, is_ms_shipped, is_published, is_schema_published, start_value, increment, minimum_value, maximum_value, is_cycling, is_cached, cache_size, system_type_id, user_type_id, precision, scale, current_value, is_exhausted