1
|
- procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na
poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady
zastosowania, zarządzanie wyzwalaczami
|
2
|
- Procedura wyzwalana (ang. trigger) to program w języku PL/SQL (również
Java lub C) który reaguje na zdarzenia zachodzące w bazie danych i
wykonuje się po zajściu określonych warunków.
- Typy procedur wyzwalanych:
- BEFORE - uruchamiane przed wykonaniem polecenia INSERT, UPDATE, DELETE
- AFTER - uruchamiane po wykonaniu polecenia INSERT, UPDATE, DELETE
- INSTEAD OF – uruchamiane zamiast polecenia INSERT, UPDATE, DELETE
- systemowe – uruchamiane po zajściu określonego zdarzenia w schemacie
lub bazie danych
|
3
|
- Zaawansowane śledzenie użytkowników
- Ochrona przed nieprawidłowymi transakcjami
- Wymuszanie więzów referencyjnych (albo więzów nie wspieranych przez
deklaratywne więzy integralnościowe albo więzów między węzłami
rozproszonej bazy danych)
- Wymuszanie złożonych reguł biznesowych
- Wymuszanie złożonych polityk bezpieczeństwa
- Zapewnianie przezroczystego zapisu wydarzeń
- Wypełnianie atrybutów wartościami domyślnymi
- Modyfikacja złożonych perspektyw
- Śledzenie wydarzeń systemowych
|
4
|
- INSTEAD OF: wyzwalacz może być zdefiniowany tylko na perspektywie
- WHEN: wyzwalacz wykonuje się tylko dla tych krotek, dla których jest
spełniony warunek
- FOR EACH ROW: wyzwalacz wykonuje się dla każdej modyfikowanej krotki
|
5
|
- Dla procedur wyzwalanych uruchamianych na skutek uaktualnienia krotek,
możemy określić listę atrybutów relacji, których uaktualnienie uruchomi
procedurę.
- Ta sama procedura może być wrażliwa na kombinację instrukcji DML (tj.
INSERT, UPDATE, DELETE). (niezgodne ze standardem)
|
6
|
- w klauzuli WHEN i ciele
wyzwalacza FOR EACH ROW można uzyskać dostęp do starej i nowej wartości
atrybutu
- domyślnie stara i nowa wersja rekordu są dostępne przez nazwy OLD i NEW
(w ciele wyzwalacza poprzedzane dwukropkiem), można to zmienić za
pomocą klauzuli REFERENCING NEW AS n
- dla instrukcji INSERT stara wartość jest pusta, dla instrukcji DELETE
nowa wartość jest pusta
|
7
|
- Poniższa procedura wyzwalana uruchamia się przed wstawieniem nowego
pracownika i nadaje mu kolejny identyfikator pobierany z licznika
(sekwencji)
|
8
|
- Poniższa procedura sprawdza, czy płaca przyznana asystentowi nie
przekracza widełek płacowych dla asystenta.
|
9
|
- Procedura wpisuje do tabeli HISTORY datę utworzenia, typ i nazwę
każdego obiektu tworzonego wewnątrz bieżącego schematu.
|
10
|
- Pozwala na zapewnianie modyfikowalności złożonych perspektyw.
|
11
|
- Wszystkie procedury wyzwalane związane z daną relacją można zablokować
(odblokować) pojedynczym poleceniem:
- Każda procedura wyzwalana może być w jednym z dwóch stanów:
odblokowania lub zablokowania. Do zablokowania (odblokowania)
pojedynczej procedury wyzwalanej służy polecenie:
- Do usunięcie wyzwalacza służy polecenie
|
12
|
- Informacje o procedurach wyzwalanych użytkownika mieszczą się w
perspektywie systemowej USER_TRIGGERS
- Informacje o zależnościach można podejrzeć w perspektywie słownika bazy
danych USER_DEPENDENCIES
|