Wyzwalacz (ang. trigger) jest to procedura wykonywana automatycznie jako reakcja na pewne zdarzenia w tabeli lub widoku bazy danych. Służą głównie do zapewnienia poprawności wprowadzania lub usuwania danych, np. wymuszenie poprawnego formatu daty. Do standardu SQL zostały wprowadzone dość późno, bo dopiero od wersji 99. W wyniku tego różne systemy bazodanowe opracowały własne składnie tworzenia triggerów. Najbliżej standardu jest Oracle, natomiast MsSQL odbiego od niego w wielu miejscach. (30-60 s)
Standardowo są wywoływane przy wykonaniu takich zapytań jak INSERT, UPDATE, DELETE.
Ale niektóre serwery rozszerzają je i pozwalają wywołać triggery nie tylko, gdy następuje ingerencja w dane, lecz także przy modyfikacji struktury bazy oraz gdy użytkownik łączy się lub rozłącza z bazą danych. W Oracle nazywa się to wyzwalaczem metadanych i zostało wprowadzone od wersji Oracle 9i, a w MsSQL są to wyzwalacze DDL od Microsoft SQL Server 2005.
Triggery mogą być wyzwalane przed, po lub zamiast instrukcji wywołującej. Np. Gdy chcemy przy operacji INSERT zmienić wartość to nie da się tego zrobić w trybie after. Należy w trybie before zmienić wartość kolumny w :new. Prawdopodobnie Oracle nie pozwala na wywołanie triggera zamiast instrukcji wywołującej. Przynajmniej ja się z tym nie zetknąłem.
Mogą być wywoływane dla tabel, widoków lub kolumn. Dla widoków tylko przez instead of.
Multitriggery to triggery na kilka różnych akcji.
Wyzwalacze metadanych i DDL dzielą się na zdarzenia bazodanowe i zdarzenia DDL
Są one pomocne w tworzeniu pełnej statystyki bazy danych, logów itd., np.
- rejestruje w dzienniku wszystkie pojawiające się błędy serwera bazy danych
- zapisuje informacje o wykonywaniu na koncie użytkownika instrukcji tworzenia
nowego obiektu w bazie danych
- sprawdzenie skąd loguje się dany użytkownik (w grach, gdzie nie można posiadać multikonta)
Głównymi cechami trioggerów są:
- brak parametrów, jednak jest to