Wyzwalacze są podprogramami wywoływanymi jako reakcja na pewne zdarzenie na obiekcie bazy danych. Przykładowo tworząc wyzwalacz możemy określić jakie działanie ma podjąć w przypadku gdyby użytkownik wprowadził dane do wybranej tabeli.
Triggery są znakomitym narzędziem do logowania zdarzeń w systemie. Możemy stworzyć własną tabelę z logami, następnie wyzwalacze które będą do tej tabeli wstawiać kolejne wiersze w zależności od działań na obiektach bazy danych.
Tworzenie wyzwalaczy
Ogólna konstrukcja tworzenia wyzwalaczy wygląda w taki sposób:
CREATE OR REPLACE TRIGGER nazwa_triggera
BEFORE/AFTER
DELETE/UPDATE/INSERT/INSERT OR UPDATE OR DELETE
ON nazwa_tabeli
instrukcje które mają zostać wykonane.
W poniższym przykładzie utworzyłem wyzwalacz który przed wprowadzeniem wiersza do tabeli JOBS ma wyświetlić na konsoli wiadomość „ktoś wstawił wiersz do tabeli jobs!!”
Od tego momentu, za każdym razem gdy będzie wstawiany wiersz do tabeli jobs zostanie wywołany wyzwalacz CUSTOM. Działania w nim opisane będą wykonywane PRZED wprowadzeniem danych do tej tabeli, ponieważ użyłem klauzuli BEFORE.
Poniższa ilustracja prezentuje efekt działania wyzwalacza. Wprowadziłem wiersz do tabeli jobs, a Oracle wywołał mój wcześniej stworzony wyzwalacz który wypisał na konsoli wiadomość.
Ten temat omawiam na poniższych szkoleniach:
• Programowanie w PL/SQL
• Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.
Czy można za pomocą triggera w momencie wpisywania przez użytkownika numeru pesel, wyciągać z niego datę urodzenia i wstawiać ją automatycznie?
OdpowiedzUsuńDziękuję za odpowiedź, pozdrawiam, Monika
Można, ale należy zastosować wyzwalacz wierszowy omawiany w następnym rozdziale oraz operator ":new"
OdpowiedzUsuń