Funkcja-problem |
Funkcja-problem |
1.05.2013, 13:57:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 1.05.2013 Ostrzeżenie: (0%) |
Funkcja ma za zadanie nie pozwolić wypożyczyć płyty klientowi, dla którego cena wypożyczonych płyt przekracza określoną wartość. Nie wiem tylko jak zrobić, aby funkcja ta liczyła sumę cen dla konkretnego klienta. Na ten moment dodaje chyba wartości wszystkich płyt które są wypożyczone. Jak zrobić tak, żeby liczyła ona dla konkretnego klienta?
CODE CREATE FUNCTION cenaplyty() RETURNS trigger AS $emp_stamp$
DECLARE suma float; BEGIN SELECT sum(cena) INTO suma from plyta, wypozyczenie WHERE plyta.numer=wypozyczenie.co_wypozyczyl; IF (suma >19) then RAISE NOTICE 'Przekracza okreslona wartosc'; return null; END IF; END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER trigcenaplyty before INSERT on wypozyczenie for each row execute procedure cenaplyty(); Ten post edytował psql 1.05.2013, 13:58:00 |
|
|
1.05.2013, 14:55:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Skorzystaj z NEW. Poza tym funkcja musi coś zwracać (właśnie ów NEW), a twoja zwraca tylko Null w przypadku błędu.
|
|
|
1.05.2013, 15:15:10
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 1.05.2013 Ostrzeżenie: (0%) |
Czyli w przypadku braku błędu będzie return NEW, tylko nie wiem i tak jak to new zapisać żeby sumowało dla konkretnego klienta
|
|
|
1.05.2013, 16:31:38
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 04:29 |