1

Temat: Pomoc z triggerami!

ZADANIE: Utwórz tabelę sprzedaz zawierającą kolumny id_produktu, data_sprzedazy,
wartosc_sprzedazy. Uzupełnij tabelę kilkoma rekordami, napisz 2 funkcje podsumowującą
wszystkie wartości, w jednym przypadku większe od zadanej, w drugim znajdujące się w zadanym
przedziale. Wartość (lub wartości) zadana stanowi parametr wywołania funkcji, wynik wartość
zwracaną.

CREATE OR REPLACE FUNCTION czas_pracy_oszustwa_trigger() RETURNS
trigger AS $$
DECLARE
teraz timestamp;
BEGIN
teraz:='now';
INSERT INTO cp_backup (id_pracownika, czas_przyjscia,
czas_wyjscia, modyfikacja, kiedy) VALUES (old.id_pracownika,
old.czas_przyjscia, old.czas_wyjscia, TG_OP, teraz);
if TG_OP='UPDATE' THEN
return new;
ELSE
return old;
END IF;
END;
$$LANGUAGE PLPGSQL;

ZADANIE: Utworzyć w bazie opisane tabele, funkcję oraz trigger. Wstawić kilka danych do tabeli
czas_pracy, a następnie wykonać kilka instrukcji Update oraz Delete do tabeli czas_pracy,
zaobserwować dane wstawiane do tabeli cp_backup.

ZADANIE: Korzystając z systemu pomocy konsoli bazy danych znaleźć informację jak utworzyć
trigger wykonywany dla całego zapytania (nie każdego modyfikowanego rekordu), wykonywany
po zaistnieniu zdarzenia (\h CREATE TRIGGER). Czy wartość zwracana funkcji triggera ma
jakiekolwiek znaczenie przy takim wywołaniu ?

ZADANIE: Utworzyć trigger (wraz z funkcją) dla dowolnej tabeli w bazie, rejestrujący każde
zapytanie modyfikujące – niezależnie od rodzaju modyfikacji, w dodatkowej tabeli.
Rejestrowanymi danymi są data, czas, nazwa modyfikowanej tabeli (TG_RELNAME) oraz rodzaj
zdarzenia.

ZADANIE: Zmodyfikować umieszczoną w instrukcji funkcję trigger tak, aby realizowała
wszystkie omówione powyżej zabezpieczenia tabeli czas pracy.

Czy mółgłby ktoś mi z tym pomóc? wyjaśnic wszystko na tych zadaniach, chciałbym się w to wdrożyć, a zupełnie nie wiem jak...