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

2.85K views
0
0 Comments

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.

Mariusz Answered question 18 lutego 2021
Add a Comment
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;

Marcin Wesel Answered question 18 lutego 2021
Add a Comment
You are viewing 1 out of 2 answers, click here to view all answers.
Write your answer.
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.