En løsning ville være at bruge Transaktioner , som gør det muligt at få "alt eller intet"-adfærd.
Ideen er følgende :
- du starter en transaktion
- du laver dine indsættelser/opdateringer
- hvis alt er OK, forpligter du transaktionen; som vil gemme alt, hvad du gjorde under denne transaktion
- hvis ikke, tilbagefører du transaktionen; og alt, hvad du gjorde i den, vil blive annulleret.
- hvis du ikke forpligter og afbryde forbindelsen (hvis f.eks. dit PHP-script dør) , intet vil blive forpligtet, og det, du gjorde under den ikke-forpligtede transaktion, vil automatisk blive rullet tilbage.
For mere information, kan du tage et kig på 12.4.1. START TRANSAKTION, FORPLIGT OG TILBAGE Syntaks , til MySQL.
Bemærk, at transaktioner kun er tilgængelige for nogle DB-motorer :
- MyISAM understøtter ikke transaktioner
- InnoDB gør (det understøtter også fremmednøgler, for eksempel -- det er langt mere avanceret end MyISAM) .