Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL]problem z triggerem przed delete
Forum PHP.pl > Forum > Przedszkole
Bandzi
Czesc,

Mam nastepujacy problem - w mojej bazce chcialbym zeby po usunieciu rekordu z tabeli 'eventy' usuwane byly wczesniej wszystkie wpisy z tabeli 'powiazania'.
Tabela powiazania sluzy do przyporzadkowania uczestnikow z innej tabeli do odpowiednich eventow.
Kolumny tabeli powiazania to id_powiazania (klucz glowny), id_eventu (klucz obcy), id_uczestnika (klucz obcy). Kolumny tabeli eventy chyba nieistotne.
Zrobilem taki trigger:
  1. CREATE TRIGGER usun_powiazania_event BEFORE DELETE ON eventy FOR EACH ROW EXECUTE PROCEDURE delete_pow_eve();

i taka funkcje:
  1. CREATE FUNCTION delete_pow_eve() RETURNS TRIGGER AS '
  2. BEGIN
  3. DELETE FROM powiazania WHERE id_eventu=OLD.id_eventu;
  4.  
  5. RETURN NULL;
  6. END;
  7. ' LANGUAGE 'plpgsql';


Niestety uniemozliwia to w ogole usuwanie czegokolwiek z tabeli eventy, w dodatku nie zwracany jest zaden blad a jedynie DELETE 0. Co robie nie tak?
mmmmmmm
Wydaje mi się, że błędem jest zwracanie NULL, zamiast OLD.
Po wtóre problem ten możesz rozwiązać kluczem obcym + ON DELETE CASCADE
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.