Witam. Moim zadaniem jest stworzenie funkcji i wyzwalacza, które podczas wypożyczenia płyty wypiszą danemu klientowi wszystkie przez niego wypożyczone płyty wraz z ich ceną.
mam kilka tabel:
tabela klient
imie | nazwisko | nr_dowodu | id_klienta
---------+----------+------------+------------
Jan | Kowalski | DB230398 | 1
Adrian | Wicki | AFF456433 | 5
Iwona | Wisniak | AFF456434 | 6
Jolanta | Ponicka | AFF456452 | 7
Adam | Brzeski | AFG456432 | 8
tabela wypozyczenie
kto_wypozyczyl | co_wypozyczyl | data_wypozyczenia | data_zwrotu
----------------+---------------+----------------------------+-------------
1 | 5 | 2019-04-08 1148.860313 |
5 | 6 | 2019-04-08 1144.94124 |
6 | 4 | 2019-04-08 1158.236129 |
7 | 5 | 2019-04-08 1112.188344 |
tabela plyta
tytul | numer | cena | gatunek
-------------------+-------+-------+---------
Shrek | 1 | 15.00 | 1
Calineczka | 3 | 15.00 | 4
Hellboy | 6 | 15.00 | 9
Constantine | 5 | 20.00 | 5
Szeregowiec Dolot | 4 | 10.00 | 4
Piraci z Karaibow | 2 | 20.00 | 7
Mam napisaną taką funkcję:
CREATE OR REPLACE FUNCTION newwyp() returns TRIGGER
LANGUAGE 'plpgsql'
AS
'
DECLARE
x int;
BEGIN
IF (SELECT id_klienta FROM klient WHERE id_klienta=NEW.kto_wypozyczyl) IS NOT NULL THEN
x= (SELECT co_wypozyczyl FROM wypozyczenie WHERE kto_wypozyczyl=NEW.kto_wypozyczyl);
RAISE NOTICE ''Wypozyczone plyty to %'',x;
RETURN NEW;
ELSE
RAISE NOTICE ''Klient nie ma wypozyczen'';
RETURN NULL;
END IF;
END;
';
oraz wyzwalacz
CREATE TRIGGER aktualizacja
AFTER INSERT ON wypozyczenie
FOR EACH ROW EXECUTE PROCEDURE newwyp();
W jaki sposób mogę zrobić to, żeby funkcja po dodaniu wypożyczenia dla danego klienta zwracała jego wszystkie wykonane do tej pory wypożyczenia?