ฟิลด์ AUTO INCREMENT ใน SQL
Auto-increment จะสร้างเลขเด็ดขาดหนึ่งเดียวเมื่อบันทึกใหม่ถูกแทรกลงในตาราง。
ฟิลด์ AUTO INCREMENT
เรามักต้องการที่จะสร้างค่าของฟิลด์หลักโดยอัตโนมัติในแต่ละครั้งที่เพิ่มบันทึกใหม่
เราสามารถสร้างฟิลด์ auto-increment ในตาราง
สyntax สำหรับ MySQL
SQL ประมาณการดังต่อไปนี้จะกำหนดคอลัมน์ "P_Id" ในตาราง "Persons" ให้เป็น auto-increment หลัก:
CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
MySQL ใช้คำสั่ง AUTO_INCREMENT สำหรับงาน auto-increment
โดยปกติ AUTO_INCREMENT จะเริ่มต้นที่ 1 และเพิ่มขึ้น 1 ต่อบันทึกใหม่
เพื่อที่จะให้ AUTO_INCREMENT หลักคู่ที่เริ่มต้นด้วยค่าอื่น โปรดใช้ SQL ประมาณการดังต่อไปนี้:
ALTER TABLE Persons AUTO_INCREMENT=100
เพื่อที่จะเพิ่มบันทึกใหม่ในตาราง "Persons" พวกเราไม่จำเป็นต้องกำหนดค่าสำหรับคอลัมน์ "P_Id" (ค่าจะถูกเพิ่มเองโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
คำสั่ง SQL ด้านบนจะใส่บันทึกใหม่ลงในตาราง "Persons" ค่า "P_Id" จะได้รับค่าเด็ดขาด ค่า "FirstName" จะมีค่าเป็น "Bill" และค่าของคอลัมน์ "LastName" จะมีค่าเป็น "Gates"
สyntax สำหรับ SQL Server
SQL ประมาณการดังต่อไปนี้จะกำหนดคอลัมน์ "P_Id" ในตาราง "Persons" ให้เป็น auto-increment หลัก:
CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS SQL ใช้คำสั่ง IDENTITY สำหรับงาน auto-increment
โดยปกติ IDENTITY จะเริ่มต้นที่ 1 และเพิ่มขึ้น 1 ต่อบันทึกใหม่
เพื่อกำหนดให้คอลัมน์ "P_Id" เริ่มต้นที่ 20 และเพิ่มขึ้น 10 โปรดเปลี่ยน identity ให้เป็น IDENTITY(20,10)
เพื่อที่จะเพิ่มบันทึกใหม่ในตาราง "Persons" พวกเราไม่จำเป็นต้องกำหนดค่าสำหรับคอลัมน์ "P_Id" (ค่าจะถูกเพิ่มเองโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
คำสั่ง SQL ด้านบนจะใส่บันทึกใหม่ลงในตาราง "Persons" ค่า "P_Id" จะได้รับค่าเด็ดขาด ค่า "FirstName" จะมีค่าเป็น "Bill" และค่าของคอลัมน์ "LastName" จะมีค่าเป็น "Gates"
สyntax สำหรับ Access
SQL ประมาณการดังต่อไปนี้จะกำหนดคอลัมน์ "P_Id" ในตาราง "Persons" ให้เป็น auto-increment หลัก:
CREATE TABLE Persons ( P_Id int PRIMARY KEY AUTOINCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS Access ใช้คำสั่ง AUTOINCREMENT สำหรับงาน auto-increment
โดยปกติ AUTOINCREMENT จะเริ่มต้นที่ 1 และเพิ่มขึ้น 1 ต่อบันทึกใหม่
เพื่อกำหนดให้คอลัมน์ "P_Id" เริ่มต้นที่ 20 และเพิ่มขึ้น 10 โปรดเปลี่ยน autoincrement ให้เป็น AUTOINCREMENT(20,10)
เพื่อที่จะเพิ่มบันทึกใหม่ในตาราง "Persons" พวกเราไม่จำเป็นต้องกำหนดค่าสำหรับคอลัมน์ "P_Id" (ค่าจะถูกเพิ่มเองโดยอัตโนมัติ):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
คำสั่ง SQL ด้านบนจะใส่บันทึกใหม่ลงในตาราง "Persons" ค่า "P_Id" จะได้รับค่าเด็ดขาด ค่า "FirstName" จะมีค่าเป็น "Bill" และค่าของคอลัมน์ "LastName" จะมีค่าเป็น "Gates"
รหัสบทสั่งสำหรับ Oracle
ใน Oracle รหัสบทสั่งจะละเอียดยิ่งขึ้น
คุณจะต้องผ่าน sequence ตัวที่สร้างฟิลด์ auto-increment (ตัวที่สร้างตัวเลขตัวอย่าง)
ใช้บทสั่ง CREATE SEQUENCE ด้านล่างนี้
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
รหัสบทด้านบนสร้างตัวเลขตัวอย่างที่มีชื่อ seq_person ซึ่งเริ่มต้นด้วยตัวเลข 1 และเพิ่มขึ้นด้วย 1 ตัวเลขต่อไป และจะคั่นเก็บ 10 ตัวเลขเพื่อเพิ่มประสิทธิภาพ ตัวเลข CACHE กำหนดจำนวนตัวเลขที่จะเก็บเพื่อเพิ่มความเร็วในการเข้าถึง
เพื่อใส่บันทึกใหม่ลงในตาราง "Persons" เราต้องใช้ฟังก์ชัน nextval ซึ่งจะดึงค่าตัวเลขต่อไปจากตัวเลขของ seq_person
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
คำสั่ง SQL ด้านบนจะใส่บันทึกใหม่ลงในตาราง "Persons" ค่า "P_Id" จะมีค่าเป็นตัวเลขต่อไปของตัวเลขที่มีในตัวเลขของ seq_person ค่า "FirstName" จะมีค่าเป็น "Bill" และค่าของคอลัมน์ "LastName" จะมีค่าเป็น "Gates"