Una solución sería usar Transacciones , que permiten obtener un comportamiento de "todo o nada".
La idea es la siguiente:
- comienza una transacción
- usted hace sus inserciones/actualizaciones
- si todo está bien, confirma la transacción; que guardará todo lo que hizo durante esta transacción
- si no, revierte la transacción; y todo lo que hiciste en él será cancelado.
- si no se compromete y se desconecta (si su secuencia de comandos PHP muere, por ejemplo) , no se confirmará nada y lo que hizo durante la transacción no confirmada se revertirá automáticamente.
Para obtener más información, puede consultar 12.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK , para MySQL.
Tenga en cuenta que las transacciones solo están disponibles para algunos motores de base de datos:
- MyISAM no admite transacciones
- InnoDB hace (también admite claves foráneas, por ejemplo; es mucho más avanzado que MyISAM) .