Za darmo na e-mailPraktyczny kurs PHP (aż 200 stron!)

Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail

Zapis do kilku tabel równocześnie

odsłon: 980
0
Komentarzy: 0

Witam.

Zawsze w ramach nauki mamy przykłady zapisu danych do bazy – do jednej tabeli. Co jednak i jak zapisać do co najmniej dwóch tabel powiązanych kluczem obcym? Skąd mam 100% pewności, że poprzedni wpis do pierwszej tabeli ma ID “takie a nie inne” aby zastosować je w drugiej tabeli jako klucz obcy? Jak powinien wyglądać poprawny tok zapisu do dwóch tabel powiązanych kluczem obcym? Dziękuję za wyjaśnienie.

odpowiedział na pytanie
Dodaj komentarz
0
Mariusz (gość) 0 Comments

Bardzo dziękuję za odpowiedź – oczywiście spróbuję poprawić mój błąd w zastosowanym rozwiązaniu, które omija problem.

Zmienił status na: opublikowane
Dodaj komentarz
0

Bazując na silnikach MySQL i MsSQL Server, nie da się zapisać danych jednocześnie do dwóch tabel.

Jeśli potrzebujesz mieć 100% pewności, że instrukcja dodania danych wykonała się poprawnie, możesz skorzystać z mechanizmu transakcji. Transakcje działają w ten sposób, że agregują wykonanie kilku instrukcji w jednej “sesji”. Na koniec sesji możesz ją odrzucić (jeśli któraś instrukcja się wysypała) lub zatwierdzić.

Co do ID dla klucza obcego, możesz skorzystać z wbudowanego pola (w MySQL) o nazwie LAST_INSERT_ID(). Wtedy, wraz z użyciem transakcji, wyglądałoby to tak:

BEGIN;
INSERT INTO category ('name')
  VALUES ('test');
INSERT INTO articles (content, category_id) 
  VALUES('test content', LAST_INSERT_ID());
COMMIT;

odpowiedział na pytanie
Dodaj komentarz
Wpisz swoją odpowiedź.
Ominiesz taką okazję?Praktyczny Kurs PHP (aż 200 stron!) za darmo

Gorąco polecam, naprawdę warto skorzystać! To nic nie kosztuje. Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail.