Khi chèn dữ liệu vào bảng có PK tăng tự động, tôi cần lấy khóa đó để sử dụng trong một câu lệnh khác. Như nhiều câu hỏi hiển thị trên SO, điều này có thể được thực hiện bằng PHP sử dụng mysql_insert_id()
.Lấy id được chèn cuối cùng cho nhiều hàng
Tuy nhiên, tôi đã nhóm các chèn của tôi lại với nhau để tôi chèn nhiều hơn một hàng cùng một lúc. Tôi đã làm điều này như tôi đoán có lẽ sẽ có một số vấn đề hiệu suất, xin vui lòng tư vấn cho tôi nếu tôi sai. Dù sao, theo như tôi biết, tuy nhiên, mysql_insert_id()
chỉ trả về id cuối cùng, khi tôi cần id cho tất cả các hàng được chèn.
Tôi đoán trong trường hợp này tôi có thể:
Do một số toán học đơn giản để tính toán tất cả các id sử dụng
mysql_insert_id()
và số hàng tôi đã nhập. Nhưng liệu điều này có được đảm bảo đúng không?Sử dụng báo cáo nhiều chèn, một cho mỗi hàng
Tạo ID của tôi trước và không sử dụng auto-increment.
Tôi chắc chắn đây phải là vấn đề kinh điển, vì vậy tôi tự hỏi về cách tiếp cận phổ biến nhất và được khuyến khích là gì.
Phương pháp 'CURRENT_TIMESTAMP' có vẻ hơi nguy hiểm đối với tôi. Nếu bạn và người khác viết cùng một bảng cùng một lúc (cùng một dấu thời gian) thì sao? – tonix