En lösning skulle vara att använda Transaktioner , som gör det möjligt att få "allt eller inget"-beteende.
Tanken är följande :
- du startar en transaktion
- du gör dina infogningar/uppdateringar
- om allt är OK, begår du transaktionen; som kommer att spara allt du gjorde under den här transaktionen
- om inte, återställer du transaktionen; och allt du gjorde i den kommer att avbrytas.
- om du inte commit och kopplar bort (om ditt PHP-skript dör, till exempel) , ingenting kommer att begås, och det du gjorde under den icke-begärda transaktionen kommer automatiskt att återställas.
För mer information kan du ta en titt på 12.4.1. BÖRJA TRANSAKTION, ÅTAGANDE och ÅTERSTÄLLNINGSsyntax , för MySQL.
Observera att transaktioner endast är tillgängliga för vissa DB-motorer :
- MyISAM stöder inte transaktioner
- InnoDB gör (det stöder även främmande nycklar, till exempel -- det är mycket mer avancerat än MyISAM) .