AUTO INCREMENT ใน SQL เป็นฟีเจอร์ที่ช่วยสร้างเลขลำดับโดยอัตโนมัติเมื่อมีการแทรกข้อมูลใหม่เข้าไปในตาราง โดยทั่วไป AUTO INCREMENT มักถูกใช้กับคอลัมน์ที่เป็น Primary Key เพื่อให้มั่นใจได้ว่าข้อมูลในคอลัมน์นั้นมีความเป็นเอกลักษณ์ (Unique) และไม่ซ้ำกัน
หลักการทำงานของ AUTO INCREMENT
- คอลัมน์ที่ถูกตั้งค่าเป็น
AUTO INCREMENTจะเริ่มต้นที่ค่าที่กำหนด (ส่วนใหญ่เริ่มที่ 1) และเมื่อมีการแทรกข้อมูลใหม่เข้าไป คอลัมน์นี้จะเพิ่มค่าโดยอัตโนมัติทีละ 1 AUTO INCREMENTมักถูกใช้ในฟิลด์ที่เป็น Primary Key เช่นรหัสประจำตัวของผู้ใช้งาน (ID) ที่ต้องไม่ซ้ำกัน
โครงสร้างพื้นฐานของ AUTO INCREMENT
CREATE TABLE table_name (
column1 INT AUTO_INCREMENT,
column2 data_type,
...
PRIMARY KEY (column1)
);
ในกรณีนี้ column1 จะเป็นคอลัมน์ที่ทำงานแบบ AUTO INCREMENT และคอลัมน์นี้จะถูกตั้งค่าเป็น Primary Key ด้วย
ตัวอย่างการใช้งาน
สมมติว่าเราต้องการสร้างตาราง employees ที่เก็บข้อมูลพนักงาน โดยมีคอลัมน์ employee_id ที่เป็น AUTO INCREMENT เพื่อกำหนดรหัสพนักงานให้เป็นเลขลำดับอัตโนมัติ
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
PRIMARY KEY (employee_id)
);employee_idคือคอลัมน์ที่ใช้AUTO INCREMENTซึ่งจะสร้างหมายเลขพนักงานโดยอัตโนมัติเมื่อมีการเพิ่มพนักงานใหม่first_name,last_nameและemailคือคอลัมน์ที่เก็บข้อมูลพนักงาน เช่น ชื่อ, นามสกุล, และอีเมล- คอลัมน์
employee_idถูกกำหนดให้เป็นPRIMARY KEYเพื่อให้มั่นใจได้ว่าไม่มีค่าemployee_idซ้ำกัน

ในการเพิ่มข้อมูล เราไม่จำเป็นต้องระบุค่าในคอลัมน์ employee_id เพราะฐานข้อมูลจะเพิ่มค่าตามลำดับโดยอัตโนมัติ
INSERT INTO employees (first_name, last_name, email)
VALUES ('John', 'Doe', '[email protected]');
INSERT INTO employees (first_name, last_name, email)
VALUES ('Jane', 'Smith', '[email protected]');- เราไม่จำเป็นต้องใส่ค่าของ
employee_idในคำสั่งINSERT INTOเพราะAUTO INCREMENTจะจัดการให้โดยอัตโนมัติ - ตัวอย่างนี้แทรกข้อมูลของพนักงาน 2 คน คือ John Doe และ Jane Smith

การกำหนดค่าเริ่มต้นของ AUTO INCREMENT
เราสามารถตั้งค่าเริ่มต้นของ AUTO INCREMENT ได้ โดยใช้คำสั่งดังต่อไปนี้เพื่อเริ่มต้นค่าที่ 100 แทนที่จะเริ่มต้นที่ 1
ALTER TABLE employees AUTO_INCREMENT = 100;- คำสั่งนี้จะปรับให้ค่าเริ่มต้นของ
AUTO INCREMENTเป็น 100 และการแทรกข้อมูลใหม่ในครั้งถัดไปจะมีค่าemployee_idเริ่มที่ 100
การรีเซ็ตค่า AUTO INCREMENT
หากต้องการรีเซ็ตค่า AUTO INCREMENT ให้กลับมาเริ่มต้นที่ 1 (หรือค่าที่ต้องการ) เราสามารถใช้คำสั่ง TRUNCATE เพื่อล้างข้อมูลและรีเซ็ตค่าได้ ดังนี้
TRUNCATE TABLE employees;- คำสั่งนี้จะลบข้อมูลทั้งหมดในตาราง
employeesและรีเซ็ตค่าAUTO INCREMENTให้กลับไปเริ่มที่ 1 อีกครั้ง
สรุป
AUTO INCREMENT เป็นฟีเจอร์ที่มีประโยชน์มากในการจัดการข้อมูลที่ต้องการลำดับอัตโนมัติ โดยทั่วไปมักใช้กับคอลัมน์ที่เป็น PRIMARY KEY หรือคอลัมน์ที่ใช้ระบุเอกลักษณ์ในตาราง ข้อดีของการใช้ AUTO INCREMENT คือเราไม่จำเป็นต้องใส่ค่าลำดับเองเมื่อแทรกข้อมูลใหม่
