Krótko mówiąc, chcesz użyć transakcji (więcej dokumentów na ten temat) aby Twoje wstawki były atomowe . To jedyny sposób, aby zagwarantować, że wszystkie (lub żadne) Twoje dane zostaną wprowadzone. W przeciwnym razie możesz znaleźć się w sytuacji, którą opisujesz, w której baza danych staje się niedostępna po niektórych wstawieniach, a inne nie są w stanie ukończyć. Transakcja informuje bazę danych, że to, co robisz, to wszystko albo nic, więc powinna się wycofać, jeśli coś pójdzie nie tak.
Kiedy używasz syntetycznych kluczy podstawowych, tak jak Ty, PHP i inne języki zapewniają mechanizmy pobierania ostatniego wstawionego identyfikatora. Jeśli chcesz to zrobić w całości w MySQL, możesz użyć LAST_INSERT_ID() funkcjonować. Otrzymasz taki kod:
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;