http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja10

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


Wyszukiwarka

Podobne podstrony:
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja2
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja6
http, www strefawiedzy edu pl file php file= 28 Wyklady Bazy danych3
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja4
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja9a
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja5
http, www strefawiedzy edu pl file php file= 28 Wyklady BD prezentacja11a
http, www vbm edu pl UserFiles vbm File art e finance 02 09 08
http, moodle come uw edu pl file php file= 529 LAZARUS

więcej podobnych podstron