เทียบเท่ากับฟังก์ชัน SQL Server SCOPE_IDENTITY() เท่ากับ LAST_INSERT_ID() ใน MySQL ไวยากรณ์มีดังนี้:
SELECT LAST_INSERT_ID()
ส่งคืน id ของเร็กคอร์ดที่แทรกล่าสุด
ที่นี่ ฉันจะสร้างตารางที่มีคอลัมน์คีย์หลัก ต่อไปนี้คือการสาธิตของlast_insert_id()
ขั้นแรก ให้เราสร้างสองตาราง แบบสอบถามเพื่อสร้างตารางตารางแรกมีดังนี้:
mysql> สร้างตาราง TestOnLastInsertIdDemo -> ( -> StudentId int ไม่ใช่ NULL AUTO_INCREMENT, -> คีย์หลัก (StudentId) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.95 วินาที)
กำลังสร้างตารางที่สอง แบบสอบถามมีดังนี้:
mysql> สร้างตาราง TestOnLastInsertIdDemo2 -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> คีย์หลัก (Id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (2.79 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า TestOnLastInsertIdDemo2 (),(),(),(),(),(),(),();แบบสอบถามตกลง ได้รับผลกระทบ 8 แถว (0.21 วินาที) ระเบียน:8 รายการซ้ำ:0 คำเตือน :0
ตอนนี้สร้างทริกเกอร์ในตาราง 'TestOnLastInsertIdDemo2' แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> ตัวคั่น //mysql> สร้างทริกเกอร์ insertingTrigger หลังจากแทรก TestOnLastInsertIdDemo -> สำหรับแต่ละแถวเริ่มต้น -> แทรกลงในค่า TestOnLastInsertIdDemo2 (); -> สิ้นสุด; -> //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.19 วินาที) mysql> ตัวคั่น;
หากคุณจะแทรกระเบียนในตาราง TestOnLastInsertIdDemo ฟังก์ชัน last_insert_id() จะส่งกลับ 1 แบบสอบถามที่จะแทรกระเบียนมีดังนี้:
mysql> แทรกลงในค่า TestOnLastInsertIdDemo ();เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.31 วินาที)
ใช้ฟังก์ชันlast_insert_id() แบบสอบถามมีดังนี้:
mysql> เลือก last_insert_id();
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+-----------------+| last_insert_id() |+-----------------+| 1 |+------------------+1 แถวในชุด (0.00 วินาที)ในเอาต์พุตตัวอย่างด้านบน จะให้ 1 เนื่องจาก last_insert_id() ใช้ตารางดั้งเดิมเท่านั้น ไม่ใช่ภายในตารางทริกเกอร์