ความหมายของ AUTO_INCREMENT = N ในการสร้างตาราง
คำสั่ง CREATE TABLE ... AUTO_INCREMENT = 3 กำหนดค่าเริ่มต้นของ Auto Increment Column (มักเป็น Primary Key) ให้เริ่มที่ 3 แทนค่า Default 1
ตัวอย่างการใช้งาน
สร้างตารางตั้งค่า Auto Increment เริ่มที่ 3:
mysql> CREATE TABLE Auto_incrementDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> ) AUTO_INCREMENT = 3;
Query OK, 0 rows affected (0.52 sec)
เพิ่มข้อมูล 3 แถว (ไม่ระบุ Id):
mysql> INSERT INTO Auto_incrementDemo(Name) VALUES('John'),('Larry'),('Bob');
Query OK, 3 rows affected (0.12 sec)
ผลลัพธ์ (Id เริ่มที่ 3):
mysql> SELECT * FROM Auto_incrementDemo;
+----+-------+
| Id | Name |
+----+-------+
| 3 | John |
| 4 | Larry |
| 5 | Bob |
+----+-------+
3 rows in set (0.00 sec)
คำอธิบาย
- แถวแรกได้ Id = 3 (ค่าที่ตั้งไว้)
- แถวถัดไปเพิ่มทีละ 1 ตามปกติ (4, 5, ...)
- ไม่กระทบค่าที่ INSERT ระบุ Id เอง (Explicit Insert)
กรณีใช้งานจริง
- Migration/Merge: รวมข้อมูลจากหลาย Database ไม่ให้ ID ชนกัน (ตั้ง Offset ต่างกัน)
- Testing: ทดสอบ Logic ที่คาดการณ์ ID เริ่มต้น
- Reserved IDs: สงวน ID 1-2 ไว้สำหรับ System Records
การเปลี่ยนค่า Auto Increment ภายหลัง
-- ดูค่าปัจจุบัน
SHOW TABLE STATUS LIKE 'Auto_incrementDemo'\G
-- Auto_increment: 6
-- เปลี่ยนค่าเริ่มต้นใหม่
ALTER TABLE Auto_incrementDemo AUTO_INCREMENT = 100;
-- หรือ Reset (MyISAM/InnoDB แตกต่างกัน)
-- InnoDB: ต้องไม่มีแถวที่มี ID >= ค่าใหม่
TRUNCATE TABLE Auto_incrementDemo; -- รีเซ็ตเป็น 1 (หรือค่า AUTO_INCREMENT ของตาราง)
ข้อควรระวัง
AUTO_INCREMENTต้องเป็นPRIMARY KEYหรือUNIQUE INDEXเท่านั้น- InnoDB: ไม่สามารถตั้งค่าต่ำกว่า Max(Id) ปัจจุบันได้ (Error)
- ค่าสูงสุดขึ้นกับชนิดข้อมูล: INT UNSIGNED = 4,294,967,295