Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][PostgreSQL]Problem z triggerem
Muirin
post 1.12.2010, 18:45:56
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 1.12.2010

Ostrzeżenie: (0%)
-----


PROBLEM ROZWIAZANY, PROSZE O USUNIECIE TEMATU smile.gif


Witam smile.gif
Robię bazę danych w Postgresie, z interfejsem w PHP.

Czy możecie mi pomóc, i poradzić, dlaczego trigger może nie działać?
Powinien sprawdzać, czy nakładają się czasy trwania wykładu oraz kategorii (kategoria uczestnictwa w konferencji naukowej) - chcę w ten sposób sprawdzić, czy użytkownik zapisuje się na wykład, który odbywa się w dniu, w którym uczestniczy w konferencji. Jeśli nie, chcę zabronić mu zapisania się na dany wykład.

  1. CREATE OR REPLACE FUNCTION kategoriewyklady_check() returns TRIGGER AS '
  2. declare
  3. x bool;
  4. licznik int4 ;
  5. begin
  6. licznik = 0;
  7. x = (select (wyklady.kiedy,wyklady.trwanie) overlaps (kategorie.katkiedy,kategorie.kattrwanie) from zapisynawyklady,zapisynakonferencje,kategorie,wyklady WHERE zapisynawyklady.konfid=zapisynakonferencje.konfid AND zapisynawyklady.uczestid=zapisynakonferencje.uczestid AND zapisynawyklady.wykladid=wyklady.wykladid AND kategorie.katid=(select katid from zapisynakonferencje where uczestid=NEW.uczestid and konfid=NEW.konfid) AND zapisynawyklady.uczestid= NEW.uczestid AND zapisynawyklady.konfid= NEW.konfid AND wyklady.wykladid=NEW.wykladid);
  8. if x = false then
  9. licznik = licznik + 1;
  10. end if;
  11.  
  12. IF licznik=0 THEN
  13. return NEW;
  14.  
  15. ELSE
  16. raise notice ''Wyklad nie jest w dniu, w ktorym jestes zapisany na konferencje!'';
  17. return NULL;
  18. END IF;
  19. end;
  20. ' LANGUAGE 'plpgsql';
  21.  
  22. CREATE TRIGGER t_overlapskategoriewyklady before INSERT ON zapisynawyklady FOR each row execute procedure kategoriewyklady_check();



tabele:

kolumny w tabeli kategorie:
konfid | katid | kategoria|katkiedy| kattrwanie | koszt

w tabeli wyklady:
konfid | wykladid | temat| wykladowca | salaid |kiedy| trwanie | wolne_miejsca

w tabeli zapisynawyklady:
konfid | uczestid | wykladid

w tabeli zapisynakonferencje:
uczestid | konfid | katid

Ten post edytował Muirin 1.12.2010, 20:16:25
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 12:47