Funkcja zwracająca konkretne dane wraz z wyzwalaczem.

0

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?

0
+----+-----------+
| id | nme       |
+----+-----------+
|  1 | yellow    |
|  2 | green     |
|  3 | orange    |
|  4 | white     |
|  5 | darkgreen |
|  6 | orange    |
|  7 | grey      |
|  8 | orange    |
|  9 | orange    |
| 10 | orange    |
| 11 | orange    |
| 12 | orange    |
| 13 | orange    |
| 14 | orange    |
| 15 | orange    |
| 16 | orange    |
| 17 | grey      |
| 18 | grey      |
| 19 | white     |
| 20 | white     |
| 21 | white     |
| 22 | white     |
+----+-----------+
DELIMITER //
CREATE TRIGGER `borrow1` BEFORE INSERT ON `hello`
FOR EACH ROW
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS `hello2` SELECT * FROM `hello` LIMIT 0;
DELETE FROM `hello2`;
INSERT INTO `hello2` SELECT * FROM `hello` WHERE `nme`=NEW.`nme`;
END;//
INSERT INTO `hello` VALUES (NULL, 'grey');//
SELECT * FROM `hello2`;//
+----+------+
| id | nme  |
+----+------+
|  7 | grey |
| 17 | grey |
| 18 | grey |
+----+------+
DELIMITER ;

Może dałoby się to lepiej napisać, poszukaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1