Często podczas wykonywania pewnych operacji na tabelach w bazie danych, takich jak wstawianie, usuwanie czy aktualizowanie rekordów, trzeba zaktualizować inną tabelę i/lub wykonać pewne obliczenia za każdym razem, gdy modyfiujemy dane. Można wtedy używać triggerów, czyli wyzwalaczy.
Triggerem (wyzwalaczem) nazywamy procedurę, któa jest połączona z konkretną tabelą w bazie danych i wywołuje się automatycznie jako reakcja na wcześniej określone zdarzenie występujące w tej tabeli.
Do zdarzeń, które powodują wywołanie triggera, zalicza się:
INSERT
- dodanie nowego rekordu,UPDATE
- zmodyfikowanie istniejącego rekordu,DELETE
- usunięcie rekordu z bazy danych.
Trigger może być ustawiony do wywołania przed (BEFORE
) lub po (AFTER
) zdarzeniu, które go wywołuje.
UWAGA: Triggery są automatycznie aktywowane przez serwer. Nie ma możliwoci zatwierdzenia bądź wycofania transakcji.
Wyzwalacze są obsługiwane obecnie przez następujące DBMS: MSSQL Server, PostgreSQL, SyBase, Oracle, Firebird, SQLite, Interbase SQL, MySQL od wersji 5.0.2.
Przykład użycia wyzwalacza:
delimeter // CREATE TRIGGER logowanie AFTER UPDATE ON emp FOR EACH ROW BEGIN SET NEW.data_mod = NOW(); IF NEW.salary <> OLD.salary THEN SET NEW.pop_pensja = OLD.pensja; END IF END; // delimeter ;
Słowo kluczowe NEW
odwołuje się do wartości, które zastąpią istniejące wartości. Słowo kluczowe OLD
odwołuje się do wartości, które nie były zmienione lub będą zmienione. Operatorów NEW
i OLD
można używać tylko do wyzwalaczy dla UPDATE
i DELETE
.