Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ไม่ต้อง Insert ค่า AUTO_INCREMENT เอง (ระบบทำให้อัตโนมัติ)


คำอธิบาย

คอลัมน์ที่ตั้งค่า 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 ที่เพิ่งสร้าง