Vì hai lần chèn này được thực thi độc lập, một chương trình khác đang chạy đồng thời có thể thấy cơ sở dữ liệu ở trạng thái nơi lần chèn đầu tiên được thực hiện nhưng lần chèn thứ hai thì không.
Cho dù đây là một vấn đề hay không phụ thuộc vào logic ứng dụng. Trong trường hợp của bạn, thật khó để biết nếu không có thông tin bổ sung. Chắc là không. Một giao dịch tài chính liên quan đến hai tài khoản là một ví dụ cho thấy điều này là vấn đề:bạn không muốn tổng tất cả số dư tài khoản bị sai bất cứ lúc nào.
Nếu bạn nghĩ rằng bạn cần điều này, bạn có thể tạo nguyên tử hoạt động với chi phí hiệu suất:một chương trình khác sẽ nhìn thấy cơ sở dữ liệu trước lần chèn đầu tiên hoặc sau lần chèn thứ hai. Nó hoạt động như thế này:
$result = FALSE;
if (mysql_query('BEGIN')) {
if (mysql_query($query1) &&
mysql_query($query2))
$result = mysql_query('COMMIT'); // both queries looked OK, save
else
mysql_query('ROLLBACK'); // problems with queries, no changes
}
Công cụ lưu trữ phải hỗ trợ các giao dịch, tức là nó phải là InnoDB . Nếu không, điều này sẽ không hoạt động.