Решението би било да използвате Транзакции , които позволяват да се получи "всичко или нищо".
Идеята е следната:
- започвате транзакция
- вие правите своите вмъквания/актуализации
- ако всичко е наред, вие извършвате транзакцията; което ще запази всичко, което сте направили по време на тази транзакция
- ако не, връщате транзакцията обратно; и всичко, което сте направили в него, ще бъде отменено.
- ако не ангажирате и изключите връзката (ако вашият PHP скрипт умре, например) , нищо няма да бъде ангажирано и това, което сте направили по време на транзакцията без ангажимент, автоматично ще бъде отменено.
За повече информация можете да разгледате 12.4.1. Синтаксис START TRANSACTION, COMMIT и ROLLBACK , за MySQL.
Обърнете внимание, че транзакциите са налични само за някои DB машини :
- MyISAM не поддържа транзакции
- InnoDB прави (също поддържа външни ключове, например -- много по-напреднал е от MyISAM) .