Une solution serait d'utiliser Transactions , qui permettent d'obtenir un comportement "tout ou rien".
L'idée est la suivante :
- vous démarrez une transaction
- vous faites vos insertions/mises à jour
- si tout est OK, vous validez la transaction; qui enregistrera tout ce que vous avez fait pendant cette transaction
- si ce n'est pas le cas, vous annulez la transaction ; et tout ce que vous y avez fait sera annulé.
- si vous ne validez pas et que vous vous déconnectez (si votre script PHP meurt, par exemple) , rien ne sera validé et ce que vous avez fait pendant la transaction non validée sera automatiquement annulé.
Pour plus d'informations, vous pouvez consulter 12.4.1. START TRANSACTION, COMMIT et ROLLBACK Syntaxe , pour MySQL.
Notez que les transactions ne sont disponibles que pour certains moteurs de base de données :
- MyISAM ne prend pas en charge les transactions
- InnoDB fait (il prend également en charge les clés étrangères, par exemple -- c'est beaucoup plus avancé que MyISAM) .