Una soluzione sarebbe utilizzare Transazioni , che consentono di ottenere il comportamento "tutto o niente".
L'idea è la seguente:
- avvii una transazione
- fai i tuoi inserti/aggiornamenti
- se tutto è a posto, esegui il commit della transazione; che salverà tutto ciò che hai fatto durante questa transazione
- in caso contrario, esegui il rollback della transazione; e tutto ciò che hai fatto verrà annullato.
- se non esegui il commit e ti disconnetti (se il tuo script PHP muore, per esempio) , non verrà eseguito alcun commit e ciò che hai fatto durante la transazione non impegnata verrà automaticamente annullato.
Per ulteriori informazioni, puoi dare un'occhiata a 12.4.1. Sintassi START TRANSACTION, COMMIT e ROLLBACK , per MySQL.
Tieni presente che le transazioni sono disponibili solo per alcuni motori DB :
- MyISAM non supporta le transazioni
- InnoDB fa (supporta anche chiavi esterne, per esempio -- è molto più avanzato di MyISAM) .