Một giải pháp sẽ là sử dụng Giao dịch , cho phép nhận được hành vi "tất cả hoặc không có gì".
Ý tưởng như sau:
- bạn bắt đầu một giao dịch
- bạn thực hiện các lần chèn / cập nhật của mình
- nếu mọi thứ đều ổn, bạn thực hiện giao dịch; điều này sẽ lưu mọi thứ bạn đã làm trong giao dịch này
- nếu không, bạn khôi phục giao dịch; và mọi thứ bạn đã làm trong đó sẽ bị hủy.
- nếu bạn không cam kết và ngắt kết nối (ví dụ:nếu tập lệnh PHP của bạn chết) , sẽ không có gì được cam kết và những gì bạn đã làm trong giao dịch chưa được cam kết sẽ tự động được khôi phục.
Để biết thêm thông tin, bạn có thể xem tại 12.4.1. Cú pháp BẮT ĐẦU GIAO DỊCH, CAM KẾT và ROLLBACK , dành cho MySQL.
Lưu ý rằng các giao dịch chỉ có sẵn cho một số công cụ DB:
- MyISAM không hỗ trợ giao dịch
- InnoDB hiện (ví dụ:nó cũng hỗ trợ khóa ngoại - MyISAM tiên tiến hơn nhiều) .