2012-02-16 16 views
5

Trong ứng dụng có lưu lượng truy cập cao, có thể cho mysqli_insert_id() trả lại id không đúng hoặc để nhầm lẫn giữa hai số INSERT các truy vấn được thực hiện gần như đồng thời không?Có thể cho mysqli_insert_id trả lại id không chính xác trong các ứng dụng lưu lượng truy cập cao không?

+1

đẹp câu hỏi 1 – tomexsans

+0

FYI đây được gọi là [* Điều kiện Race *] (http://en.wikipedia.org/wiki/Race_condition) –

Trả lời

8

No. mysqli_insert_id trả về giá trị AUTO_INCREMENT gần đây nhất từ ​​truy vấn mới nhất INSERT trên kết nối hiện tại. Nó sẽ không bao giờ bị lẫn lộn với kết nối khác, ví dụ.

1

No. Làm cách nào để tôi chắc chắn? Bởi vì nó đã được báo cáo và cố định một thời gian dài dài.

1

Trích dẫn từ một câu trả lời trước với cùng câu hỏi này chính xác:

Nhìn vào http://dev.mysql.com/doc/refman/5.6/en/getting-unique-id.html để biết thêm thông tin, nó nói này:

"Đối với LAST_INSERT_ID(), ID được tạo gần đây nhất được duy trì trong máy chủ trên cơ sở mỗi kết nối.Nó không bị thay đổi bởi một khách hàng khác .Nó thậm chí không thay đổi nếu bạn cập nhật cột AUTO_INCREMENT khác với giá trị không phải là ma thuật (nghĩa là giá trị không phải là NULL và không phải 0) Sử dụng LAST_INSERT_ID() và AUTO_INCREM ENT cột đồng thời từ nhiều khách hàng là hoàn toàn hợp lệ. Mỗi khách hàng sẽ nhận được ID chèn vào cuối cùng cho báo cáo kết quả cuối cùng mà khách hàng thực thi."

Vì vậy, bạn nên sử dụng tốt làm những gì bạn muốn và bạn không nên có được kết quả kỳ lạ.

Các vấn đề liên quan