Kortom, u wilt transacties (meer document hierover) zodat uw invoegingen atomair zijn . Dit is de enige manier om te garanderen dat al uw (of geen) gegevens worden ingevoerd. Anders kunt u in de situatie komen die u beschrijft, waarbij de database niet meer beschikbaar is nadat sommige invoegingen en andere niet kunnen worden voltooid. Een transactie vertelt de database dat wat u doet alles-of-niets is en dat het dus moet worden teruggedraaid als er iets misgaat.
Wanneer u synthetische primaire sleutels gebruikt, zoals u bent, bieden PHP en andere talen mechanismen om de laatst ingevoegde id te krijgen. Als je het volledig in MySQL wilt doen, kun je de LAST_INSERT_ID() functie. Je krijgt een code als deze:
START TRANSACTION;
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
COMMIT;