W pierwszej chwili po przeczytaniu myslałem, że Twoja odp. jest żartem. Ciężko mi było zrozumieć jak to możliwe:
1. dodajemy nowy rekord do tabeli podrzędnej
2. dopiero teraz dodajemy nowy rekord do tabeli nadrzędnej
Wydawało mi się to nielogiczne ze względów na spójność danych obu tabel. Przeanalizowałem jednak obie wypowiedzi i zaczołem szukać wytłumaczenia.
Znalazłem w dokumentacji MySQL'a wersja 5 (jeszcze nieoficjalnej wersji) i dowiedziałem się, że transakcje wiązane (chyba dobrze zrozumiałem) będą dostepne dopiero od tej własnie wersji, a w obecnej 3.23 trzeba zrobić małe "oszustwo".
Wykombinowałem coś takiego i nie jestem pewny czy dobrze kombinuje (jeszcze nie działa).
Kod
$tabela_1_id = generate_key(); for each tabela_2 (id, pole_1, pole_2) INSERT INTO tabela_1 (id, pole_1, pole_2, pole_3) VALUES($tabela_1_id); INSERT INTO tabela_1 (id, pole_1, pole_2, pole_3) VALUES ($tabela_1_id);