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

ความหมายของ SELECT @@identity ใน MySQL

ฟังก์ชัน @@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) ทันที