คำอธิบาย
คอลัมน์ที่ตั้งค่า AUTO_INCREMENT จะสร้างค่าลำดับอัตโนมัติ (1, 2, 3...) เมื่อ INSERT โดยไม่ระบุค่าคอลัมน์นั้น
ขั้นตอนการสร้างตาราง
mysql> create table DemoTable (
EmployeeId int NOT NULL AUTO_INCREMENT,
EmployeeName varchar(30),
EmployeeSalary int,
PRIMARY KEY(EmployeeId) );
Query OK, 0 rows affected (0.49 sec)
การเพิ่มข้อมูล (ไม่ระบุ EmployeeId)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Chris', 56789);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('David', 78909);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Mike', 100056);
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Bob', 150000);
Query OK, 1 row affected (0.19 sec)
แสดงข้อมูล (EmployeeId ถูกสร้างอัตโนมัติ)
mysql> select * from DemoTable;
ผลลัพธ์:
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 1 | Chris | 56789 | | 2 | David | 78909 | <| 3 | Mike | 100056 | | 4 | Bob | 150000 | +------------+--------------+----------------+ 4 rows in set (0.00 sec)
คำอธิบาย
- INSERT ระบุแค่
(EmployeeName, EmployeeSalary)ไม่รวม EmployeeId - MySQL กำหนด EmployeeId = 1, 2, 3, 4 อัตโนมัติ
- AUTO_INCREMENT ต้องเป็น PRIMARY KEY หรือ UNIQUE KEY
- ค่าเริ่มต้น = 1, เพิ่มทีละ 1
กรณีต้องการระบุค่าเอง (Override)
INSERT INTO DemoTable(EmployeeId, EmployeeName, EmployeeSalary) VALUES (100, 'Manual', 50000);
แถวถัดไป Auto Increment จะต่อจากค่าสูงสุดที่มี (101)
LAST_INSERT_ID()
ดึงค่า Auto Increment ที่เพิ่ง Insert:
INSERT INTO DemoTable(EmployeeName, EmployeeSalary) VALUES ('New', 30000);
SELECT LAST_INSERT_ID(); -- คืนค่า EmployeeId ที่เพิ่งสร้าง