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 ServerPostgreSQLSyBaseOracleFirebirdSQLiteInterbase 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 NEWOLD można używać tylko do wyzwalaczy dla UPDATEDELETE.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.