Wyzwalacze - Triggery

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Trigger / Wyzwalacz

MySQL - opis i przykłady

Trigger (wyzwalacz) jest to skrypt (fragment kodu) wykonywany w przypadku zajscia jakiegos
zdarzenia w bazie danych (np. dodania danych, ich modyfikacji, czy usunięcia).

Wyzwalacze dostępne są w takich bazach danych jak: Microsoft SQL Server, PostgreSQL, Sybase,
Oracle, Firebird, SQLite, InterBase SQL, MySQL.

Istnieje kilka typow wyzwalaczy. Omowimy dwa z nich: BEFORE i AFTER.

Dla kazdego typu istnieją trzy zdarzenia, ktore powodują wykonanie wyzwalacza:

• AFTER DELETE – wykonanie wyzwalacza po operacji usunięcia rekordu


• AFTER INSERT - wykonanie wyzwalacza po dodaniu rekordu
• AFTER UPDATE - wykonanie wyzwalacza po zmodyfikowaniu rekordu

• BEFORE DELETE - wykonanie wyzwalacza przed operacją usunięcia rekordu


• BEFORE INSERT - wykonanie wyzwalacza przed dodaniem rekordu
• BEFORE UPDATE - wykonanie wyzwalacza przed zmodyfikowaniem rekordu

Ponizsze przykłady są oparte o MySQL

Przykładowa konstrukcja:

Przykłady:

Przykład 1. Stworzmy tabelę, na ktorej utworzymy wyzwalacz. Tabela będzie przechowywała


informacje dotyczące pracownikow:
Przykład 2. Teraz utworzymy wyzwalacz, ktory automatycznie uzupełni datę dodania rekordu do bazy.

Wyjasnienie:

NEW.data_dodania oznacza nową wartosc data_dodania. Wyzwalacz wywołany przed operacją


INSERT spowoduje, ze przy dodaniu rekordu do tabeli pracownik wartosc pola data_dodania przyjmie
aktualną datę i czas.

Przykład 3. Kolejny przykład, to wyzwalacz, ktory będzie uzupełniał datę ostatniej modyfikacji
rekordu, a takze wartosc pola pop_pensja (poprzednia pensja) - w momencie kiedy pensja pracownika
ulegnie zmianie.

Wyjasnienie:

Wykorzystana została funkcja warunkowa IF, ktora sprawdza czy nowa pensja (NEW.pensja)
pracownika jest rozna od poprzedniej (OLD.pensja).
Jezeli warunek jest spełniony, pole pop_pesja przyjmie wartosc poprzedniej pensji, natomiast pole
pensja przyjmie wartosc aktualną.

Sprawdzenie:
1. Wykonaj ponizsze zapytanie i sprawdz zawartosc tabeli pracownik:

Wyzwalacz uzupełnił pole data_dodania.

2. Sprawdz działanie wyzwalacza z przykładu 3.

Wykonaj aktualizację pensji:

i sprawdz zawartosc tabeli pracownik:

Wyzwalacz uzupełnił pola z datą modyfikacji oraz poprzednią pensją.

You might also like