Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie rekordów z bazy
marcinp1984
post
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??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zbłąkany
post
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)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 14:01