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

เทียบเท่ากับฟังก์ชัน SQL Server SCOPE_IDENTITY () ใน MySQL หรือไม่


เทียบเท่ากับฟังก์ชัน 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() ใช้ตารางดั้งเดิมเท่านั้น ไม่ใช่ภายในตารางทริกเกอร์