2
ฟังก์ชัน LAST_INSERT_ID () ของ MySql รับประกันว่าถูกต้องหรือไม่
เมื่อฉันทำแถวเดียวINSERTไปยังตารางที่มีAUTO_INCREMENTคอลัมน์ฉันต้องการใช้LAST_INSERT_ID()ฟังก์ชันเพื่อส่งกลับAUTO_INCREMENTค่า ed ' ใหม่ที่เก็บไว้สำหรับแถวนั้น Microsoft SQL Server และผู้ดูแลระบบหลายคนนั้นไม่ต้องสงสัยเลยว่าทราบถึงหน้าที่การใช้งานที่เทียบเท่าใน SQL Server ( SCOPE_IDENTITYและ@@IDENTITY) ที่ไม่เคยมีปัญหามาก่อน ฉันรู้สถานะของเอกสาร MySQL: ID ที่ถูกสร้างขึ้นจะถูกเก็บไว้ในเซิร์ฟเวอร์ในแต่ละการเชื่อมต่อพื้นฐาน ซึ่งหมายความว่าค่าที่ส่งคืนโดยฟังก์ชันไปยังไคลเอนต์ที่กำหนดเป็นAUTO_INCREMENTค่าแรกที่สร้างขึ้นสำหรับคำสั่งล่าสุดที่มีผลต่อAUTO_INCREMENTคอลัมน์โดยไคลเอ็นต์นั้น ค่านี้ไม่สามารถรับผลกระทบจากไคลเอนต์อื่นแม้ว่าพวกเขาสร้างAUTO_INCREMENTค่าของตนเอง พฤติกรรมนี้ทำให้มั่นใจได้ว่าลูกค้าแต่ละคนสามารถดึงข้อมูล ID ของตนเองได้โดยไม่ต้องกังวลกับกิจกรรมของลูกค้ารายอื่นและไม่จำเป็นต้องล็อคหรือทำธุรกรรม (ที่มา) และแม้กระทั่งไปไกลถึงจะบอกว่า: การใช้LAST_INSERT_ID()และAUTO_INCREMENTคอลัมน์พร้อมกันจากไคลเอนต์หลายคนถูกต้องสมบูรณ์ (ที่มา) มีความเสี่ยงหรือสถานการณ์ที่ทราบที่อาจทำให้LAST_INSERT_ID()ไม่คืนค่าที่ถูกต้องหรือไม่? ฉันใช้ MySQL 5.5 บน CentOS 5.5 x64 และ Fedora 16 x64 และเอ็นจิ้น InnoDB