Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]usuwanie z kilku tabel, w relacji jeden do wielu
Forum PHP.pl > Forum > Przedszkole
pablo_83
witam,
mam pytanie odnośnie usuwania danych z kilku tabel powiązanych między sobą na raz.

mam taką strukturę:

tabela Strony
id_strona <- klucz główny

tabela Aktualności
id_aktualnosci <-klucz główny
id_strony <-klucz obcy

tabela Aktualności_pliki
id_plik <- klucz główny
id_aktualności <- klucz obcy

teraz chcę usunąć stronę o danym id_strony muszę sprawdzić jakie aktualności są na tej stronie i czy do danej aktualności są dodane jakieś pliki.
Czy mogę w jakiś sposób jednym zapytaniem czy strona ma jakieś aktualności a one jakieś pliki jeśli tak to wykorzystać je do usuwania rekordu?

Czy jednak muszę zdobyć id_aktualności potem usunąć wszystkie pliki o tym id i dopiero potem usuwać wszystkie aktualności o danym id_strony.

Czy da się w tym przypadku przy usuwaniu użyć join'a w którejkolwiek postaci?


Fifi209
Przy relacjach, oczywiście silnik InnoDB (chyba nie muszę wspominać) i kaskadowe usuwanie danych.
pablo_83
tak silnik oczywiście mam InnoDb
rozumiem że to w ustawieniach tabeli przy kluczach w opcji delete mam mieć ustawione cascade?

czy w zapytaniu potem też dodtkowo coś muszę zawierać oprócz oczywiście id_strony ?
jak miałoby wyglądać samo zapytanie?
Fifi209
Cytat(pablo_83 @ 15.06.2011, 21:33:32 ) *
rozumiem że to w ustawieniach tabeli przy kluczach w opcji delete mam mieć ustawione cascade?

Dobrze rozumiesz.
Cytat(pablo_83 @ 15.06.2011, 21:33:32 ) *
czy w zapytaniu potem też dodtkowo coś muszę zawierać oprócz oczywiście id_strony ?
jak miałoby wyglądać samo zapytanie?

Wtedy, jeżeli usuniesz z tabeli strony, to wszystko co było powiązane zniknie automatycznie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.