ฟิลด์การเพิ่มอัตโนมัติของ SQL
สนามเพิ่มอัตโนมัติ
การเพิ่มอัตโนมัติช่วยให้สามารถสร้างหมายเลขเฉพาะได้โดยอัตโนมัติเมื่อมีการแทรกระเบียนใหม่ลงในตาราง
บ่อยครั้งนี่คือฟิลด์คีย์หลักที่เราต้องการสร้างโดยอัตโนมัติทุกครั้งที่มีการแทรกเรกคอร์ดใหม่
ไวยากรณ์สำหรับ MySQL
คำสั่ง SQL ต่อไปนี้กำหนดคอลัมน์ "Personid" ให้เป็นฟิลด์คีย์หลักที่เพิ่มค่าอัตโนมัติในตาราง "บุคคล":
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL ใช้AUTO_INCREMENT
คำหลักเพื่อดำเนินการคุณลักษณะการเพิ่มอัตโนมัติ
โดยค่าเริ่มต้น ค่าเริ่มต้นสำหรับAUTO_INCREMENT
คือ 1 และจะเพิ่มขึ้น 1 สำหรับแต่ละระเบียนใหม่
เพื่อให้AUTO_INCREMENT
ลำดับเริ่มต้นด้วยค่าอื่น ให้ใช้คำสั่ง SQL ต่อไปนี้:
ALTER TABLE Persons AUTO_INCREMENT=100;
ในการแทรกระเบียนใหม่ลงในตาราง "บุคคล" เราจะไม่ต้องระบุค่าสำหรับคอลัมน์ "บุคคล" (ค่าที่ไม่ซ้ำกันจะถูกเพิ่มโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
คำสั่ง SQL ด้านบนจะแทรกระเบียนใหม่ลงในตาราง "บุคคล" คอลัมน์ "Personid" จะได้รับการกำหนดค่าที่ไม่ซ้ำ คอลัมน์ "FirstName" จะถูกตั้งค่าเป็น "Lars" และคอลัมน์ "LastName" จะถูกตั้งค่าเป็น "Monsen"
ไวยากรณ์สำหรับ SQL Server
คำสั่ง SQL ต่อไปนี้กำหนดคอลัมน์ "Personid" ให้เป็นฟิลด์คีย์หลักที่เพิ่มค่าอัตโนมัติในตาราง "บุคคล":
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Server ใช้IDENTITY
คำสำคัญเพื่อดำเนินการคุณลักษณะการเพิ่มอัตโนมัติ
ในตัวอย่างข้างต้น ค่าเริ่มต้น
IDENTITY
คือ 1 และจะเพิ่มขึ้น 1 สำหรับแต่ละระเบียนใหม่
เคล็ดลับ:ในการระบุว่าคอลัมน์ "Personid" ควรเริ่มต้นที่ค่า 10 และเพิ่มขึ้นทีละ 5 ให้เปลี่ยนIDENTITY(10,5)
เป็น
ในการแทรกระเบียนใหม่ลงในตาราง "บุคคล" เราจะไม่ต้องระบุค่าสำหรับคอลัมน์ "บุคคล" (ค่าที่ไม่ซ้ำกันจะถูกเพิ่มโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
คำสั่ง SQL ด้านบนจะแทรกระเบียนใหม่ลงในตาราง "บุคคล" คอลัมน์ "Personid" จะได้รับการกำหนดค่าที่ไม่ซ้ำ คอลัมน์ "FirstName" จะถูกตั้งค่าเป็น "Lars" และคอลัมน์ "LastName" จะถูกตั้งค่าเป็น "Monsen"
ไวยากรณ์สำหรับการเข้าถึง
คำสั่ง SQL ต่อไปนี้กำหนดคอลัมน์ "Personid" ให้เป็นฟิลด์คีย์หลักที่เพิ่มค่าอัตโนมัติในตาราง "บุคคล":
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access ใช้AUTOINCREMENT
คำสำคัญเพื่อดำเนินการคุณลักษณะการเพิ่มอัตโนมัติ
โดยค่าเริ่มต้น ค่าเริ่มต้นสำหรับAUTOINCREMENT
คือ 1 และจะเพิ่มขึ้น 1 สำหรับแต่ละระเบียนใหม่
เคล็ดลับ:ในการระบุว่าคอลัมน์ "Personid" ควรเริ่มต้นที่ค่า 10 และเพิ่มขึ้นทีละ 5 ให้เปลี่ยนการเพิ่มค่าอัตโนมัติ
AUTOINCREMENT(10,5)
เป็น
ในการแทรกระเบียนใหม่ลงในตาราง "บุคคล" เราจะไม่ต้องระบุค่าสำหรับคอลัมน์ "บุคคล" (ค่าที่ไม่ซ้ำกันจะถูกเพิ่มโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
คำสั่ง SQL ด้านบนจะแทรกระเบียนใหม่ลงในตาราง "บุคคล" คอลัมน์ "Personid" จะได้รับการกำหนดค่าที่ไม่ซ้ำ คอลัมน์ "FirstName" จะถูกตั้งค่าเป็น "Lars" และคอลัมน์ "LastName" จะถูกตั้งค่าเป็น "Monsen"
ไวยากรณ์สำหรับ Oracle
ใน Oracle รหัสนั้นซับซ้อนกว่าเล็กน้อย
คุณจะต้องสร้างฟิลด์การเพิ่มอัตโนมัติด้วยวัตถุลำดับ (วัตถุนี้สร้างลำดับตัวเลข)
ใช้CREATE SEQUENCE
ไวยากรณ์ต่อไปนี้:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
โค้ดด้านบนสร้างอ็อบเจ็กต์ลำดับที่เรียกว่า seq_person ซึ่งเริ่มต้นด้วย 1 และจะเพิ่มขึ้นทีละ 1 และจะแคชถึง 10 ค่าสำหรับประสิทธิภาพ ตัวเลือกแคชระบุจำนวนค่าลำดับที่จะเก็บไว้ในหน่วยความจำเพื่อการเข้าถึงที่รวดเร็วยิ่งขึ้น
ในการแทรกระเบียนใหม่ลงในตาราง "บุคคล" เราจะต้องใช้ฟังก์ชัน nextval (ฟังก์ชันนี้จะดึงค่าถัดไปจากลำดับ seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
คำสั่ง SQL ด้านบนจะแทรกระเบียนใหม่ลงในตาราง "บุคคล" คอลัมน์ "Personid" จะได้รับหมายเลขถัดไปจากลำดับ seq_person คอลัมน์ "FirstName" จะถูกตั้งค่าเป็น "Lars" และคอลัมน์ "LastName" จะถูกตั้งค่าเป็น "Monsen"