Wyzwalacze (triggery) w języku SQL na przykładzie DBMS MySQL

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.