คำตอบ: ได้เลยครับ
เมื่อคอลัมน์ถูกกำหนดเป็น AUTO_INCREMENT MySQL จะสร้างค่า ID ใหม่ให้อัตโนมัติเมื่อ INSERT โดยไม่ต้อง (และไม่ควร) ระบุค่าสำหรับคอลัมน์นั้น
สร้างตารางพร้อม AUTO_INCREMENT
mysql> CREATE TABLE DemoTable1479 (
-> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeSalary INT
-> );
Query OK, 0 rows affected (0.86 sec)
INSERT โดยระบุเฉพาะคอลัมน์ที่ไม่ใช่ AUTO_INCREMENT
mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6800); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5600); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5700); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6900); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(15000); Query OK, 1 row affected (0.11 sec)
ผลลัพธ์ - MySQL กำหนด EmployeeId ให้อัตโนมัติ
+------------+----------------+ | EmployeeId | EmployeeSalary | +------------+----------------+ | 1 | 6800 | | 2 | 5600 | | 3 | 5700 | | 4 | 6900 | | 5 | 15000 | +------------+----------------+ 5 rows in set (0.00 sec)
จุดสำคัญ
- ระบุชื่อคอลัมน์ในคำสั่ง INSERT:
INSERT INTO table(col1, col2) VALUES(val1, val2) - เว้นคอลัมน์ AUTO_INCREMENT ไว้ (MySQL จะเติมเอง)
- หาก INSERT โดยไม่ระบุชื่อคอลัมน์ ต้องใช้
NULLหรือ0หรือDEFAULTสำหรับคอลัมน์ AUTO_INCREMENT - ค่า AUTO_INCREMENT จะเพิ่มขึ้นทีละ 1 ตามลำดับ (เริ่มต้นที่ 1)
วิธี INSERT แบบไม่ระบุชื่อคอลัมน์ (ต้องส่งค่า placeholder)
INSERT INTO DemoTable1479 VALUES(DEFAULT, 6800); -- หรือ INSERT INTO DemoTable1479 VALUES(NULL, 6800); -- หรือ INSERT INTO DemoTable1479 VALUES(0, 6800);