ฟังก์ชัน @@identity ใน MySQL
@@identity (หรือ LAST_INSERT_ID()) ใช้คืนค่าของคอลัมน์ AUTO_INCREMENT ที่ถูกสร้างขึ้นล่าสุดใน Session (Connection) ปัจจุบัน
สร้างตารางพร้อม AUTO_INCREMENT PRIMARY KEY
mysql> CREATE TABLE DemoTable (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(100)
);
Query OK, 0 rows affected (0.67 sec)
เพิ่มข้อมูล 5 แถว
mysql> INSERT INTO DemoTable(UserName) VALUES('David');
mysql> INSERT INTO DemoTable(UserName) VALUES('Mike');
mysql> INSERT INTO DemoTable(UserName) VALUES('Carol');
mysql> INSERT INTO DemoTable(UserName) VALUES('Robert');
mysql> INSERT INTO DemoTable(UserName) VALUES('John');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1 | David |
| 2 | Mike |
| 3 | Carol |
| 4 | Robert |
| 5 | John |
+--------+----------+
5 rows in set (0.00 sec)
คำสั่งดูค่า AUTO_INCREMENT ล่าสุด
mysql> SELECT @@identity;
ผลลัพธ์:
+------------+
| @@identity |
+------------+
| 5 |
+------------+
1 row in set (0.00 sec)
คำอธิบาย
@@identityคืนค่า 5 ซึ่งเป็น UserId ของแถวที่ INSERT ล่าสุด (John)- ทำงานในระดับ Session: หาก Session อื่น INSERT ค่าจะไม่กระทบกัน
- ฟังก์ชันที่แนะนำใช้แทนคือ
LAST_INSERT_ID()ซึ่งทำงานคล้ายกันแต่มาตรฐานกว่า - มีประโยชน์เมื่อต้องการนำ ID ที่เพิ่งสร้างไปใช้ในตารางอื่น (Foreign Key) ทันที