![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 17.05.2009 Ostrzeżenie: (0%)
|
I znów pytanie.. mam np takie tabelki....
GATUNKI id_gatunku serial nazwa gatunku text WYKONAWCY id_wykonawcy serial nazwa_wykonawcy text ALBUMY id_albumu serial tytul text rok_wydania integer id_gatunku integer id_wykonawcy integer jeśli mam wszystkie tabele wypełnione i chce usunąć np jeden gatunek pojawia się problem w postaci: BŁĄD: update or delete on table "gatunki" violates foreign key constraint "fk_albumy_4" on table "albumy" DETAIL: Key (id_gatunku)=(1) is still referenced from table "albumy". No i jak się dowiedziałem tą sprawę załatwia ON DELETE CASCADE.... no i fakt.. załatwia aż za dobrze bo usuwając jeden gatunek tracę wszystkie albumy które mają klucz obcy do tego gatunku... jak to można rozwiązać?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Da się usunąć taki gatunek nie usuwając przy tym albumu?? |
|
|
|
Post
#2
|
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%)
|
Jeśli masz założone relacje, to odpowiedź jest jedna: nie da się tego zrobić. Ale rozwiązanie istnieje, po prostu do tabeli gatunki dodaj pole typu boolean o nazwie is_active z domyślną wartością prawda i chcąc usunąć dany gatunek zmień wartość tego pola na fałsz. Oczywiście takie rozwiązanie powoduje, że do każdego zapytania wybierającego musisz dołączać warunek na pole is_active (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 25 Dołączył: 6.09.2008 Skąd: Warszawa Ostrzeżenie: (0%)
|
Piszesz o polach typu serial, więc domyślam się, że chodzi o Postgre. Jeżeli tak to według dokumentacji są jeszcze dwie możliwości oprócz CASCADE nie usuwające powiązanych rekordów. Chodzi o SET NULL i SET DEFAULT.
|
|
|
|
Post
#4
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
Cytat Da się usunąć taki gatunek nie usuwając przy tym albumu?? Najpierw odpowiedz sobie na pytanie co ma sie potem stac: film tez ma byc usuniety, ma nie miec zadnej kategorii, ma byc przydzielony do jakiejs domyslnej kategorii? A potem skorzystaj z rozwiazan podanych wyzej. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 17.05.2009 Ostrzeżenie: (0%)
|
ok, dzięki za wszystkie podpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 00:30 |