background image

Wyzwalacze 

background image

Przegląd zagadnień

Czym są wyzwalacze i kiedy je stosujemy
Rodzaje wyzwalaczy
Podsumowanie
Laboratorium

background image

Czym są wyzwalacze i kiedy je stosujemy?

Wyzwalacz (ang. trigger) jest specjalnym rodzajem 

procedury składowanej. W przeciwieństwie do 

zwykłej procedury składowanej wyzwalacz nie może 

zostać jawnie wywołany.
Wyzwalacz jest wywoływany w reakcji na określone 

akcje. 
Akcje te, to wykonanie przez użytkownika 

określonego polecenia SQL (INSERT, UPDATE, 

DELETE) na danej tabeli, dla której został określony 

wyzwalacz.

background image

Tworzenie wyzwalaczy 

Wyzwalacze tworzymy używając polecenia CREATE 

TRIGGER.

W definicji wyzwalacza określamy: 

nazwę wyzwalacza; 

dla jakiej tabeli tworzymy wyzwalacz; 

na jakie akcje wyzwalacz będzie reagował; 

jakiego typu wyzwalacz tworzymy; 

ciało wyzwalacza (odpowiednik ciała procedury składowanej) -
czyli kod wykonywany przez wyzwalacz.

Poniżej podano przykład utworzenia prostego wyzwalacza (o 

nazwie t_informacja), który jest wywoływany po wykonaniu 

przez użytkownika polecenia INSERT na tabeli o nazwie 

tabela1(tu konkretny przykład wysyłania e-maila do 

administratora z informacją o wstawieniu nowych danych do 

tabeli).

background image

Tworzenie wyzwalaczy 

Wyzwalacze tworzymy używając polecenia CREATE 

TRIGGER.

Poniżej podano przykład utworzenia prostego wyzwalacza

typu AFTER (o nazwie t_informacja), który jest wywoływany 

po wykonaniu przez użytkownika polecenia INSERT na 

tabeli o nazwie tabela1(tu konkretny przykład wysyłania e-

maila do administratora z informacją o wstawieniu nowych 

danych do tabeli).

background image

Zastosowania wyzwalaczy

Wyzwalacze stosujemy wszędzie tam, gdzie w inny sposób nie da się 

weryfikować integralności danych, a zwłaszcza ich zgodności z regułami logiki 

biznesowej. 

Na przykład, chcemy, by w pewnej kolumnie tabeli wstawiane były tylko wartości 

unikalne, ale jednocześnie zezwalamy na wstawienie wartości NULL.
Jedynym rozwiązaniem jest użycie wyzwalacza, który sprawdzi, czy wstawiana 

właśnie wartość już w danym polu wystąpiła, a jeżeli użytkownik wstawia wartość 

NULL, to wyzwalacz mu na to pozwoli (tego efektu nie można osiągnąć innymi 

metodami - np. używając indeksów, ustawiając właściwość unikalności kolumny 

lub używając kryteriów sprawdzających dane wstawiane w kolumnę).
Drugie zastosowanie to wszelkiego typu automatyzacja zadań administracyjnych 

w bazie danych (wszelkiego rodzaju "przypominacze", obsługa nietypowych 

działań czy chociażby wysyłanie wiadomości przez e-mail lub pager).
Wreszcie z uwagi na pewne cechy wyzwalacze pozwalają na określony typ 

przetwarzania transakcyjnego. 

background image

Transakcyjność wyzwalaczy

Instrukcje wykonywane w ciele wyzwalacza są traktowane 

jako fragment transakcji jawnie lub niejawnie rozpoczętej 

przez użytkownika. 
Oznacza to, że za pomocą wyzwalacza można zatwierdzić 

(COMMIT TRAN) lub odrzucić (ROLLBACK TRAN) zmiany

w tabeli wprowadzone przez użytkownika.

MS SQL Server wprowadza dwie tabele (o nazwach inserted

oraz deleted) przechowujące zmienione lub usunięte przez 

użytkownika wartości. 
Z tabel tych mogą korzystać wyzwalacze. Dzięki temu 

można za pomocą wyzwalaczy cofnąć wykonanie przez 

użytkownika zmiany w tabeli. 

background image

Rodzaje wyzwalaczy 

Wyzwalacze wykonywane są automatycznie 

przez serwer w odpowiedzi na akcję użytkownika 

(wykonanie jednego z poleceń języka SQL 

modyfikujących dane w tabeli).
Wyróżniamy dwa rodzaje wyzwalaczy:

•wyzwalacze typu "po" (ang. AFTER),
•wyzwalacze tpyu "zamiast" (ang. INSTEAD OF).

background image

Wyzwalacze typu "po"

Jak sama nazwa wyzwalaczy sugeruje, są one wykonywane 

po wykonaniu określonego polecenia. W definicji 

wyzwalacza typu "po" przy liście poleceń język SQL, na które 

wyzwalacz ma reagować, pojawia się słowo kluczowe 

AFTER.
Z uwagi na to, że wyzwalacze typu "po" nie ingerują w 

wykonanie polecenia języka SQL, możemy dla jednej tabeli i 

jednego polecenia SQL (np. dla INSERT) zdefiniować więcej 

niż jeden wyzwalacz tego typu. 

Kolejność wykonywania wyzwalaczy ustala się przy pomocy 

odpowiedniej systemowej procedury składowanej (w MS 

SQL Server jest to procedura sp_settriggerorder). 

background image

Wyzwalacze typu "zamiast"

Dla każdej akcji (dla każdego polecenia modyfikującego 

dane) w tabeli możemy zdefiniować jeden wyzwalacz typu 

"zamiast". 
Wyzwalacze tego typu są wykonywane, jak wskazuje nazwa, 

zamiast określonego polecenia SQL.

W definicji wyzwalaczy tego typu, przy liście poleceń języka 

SQL, na które wyzwalacz ma reagować, pojawia się słowo 

kluczowe INSTEAD OF.

background image

Podsumowanie

Czym są wyzwalacze i kiedy je stosujemy

Wyzwalacze są szczególnym rodzajem procedur 
składowanych. 
W przeciwieństwie do zwykłych procedur są wykonywane 
automatycznie jako reakcja na wykonanie określonych 
poleceń SQL i nie mogą być wywołane jawnie przez 
użytkownika.

Rodzaje wyzwalaczy

background image

Laboratorium

Planowanie i tworzenie wyzwalaczy 

wyzwalacz typu ZAMIAST 

wyzwalacz typu PO