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.