sobota, 20 listopada 2010

Kurs Oracle PL/SQL. Wyzwalacze wierszowe


Istnieje możliwość modyfikowania danych przez wyzwalacz, zanim te zostaną wstawione do tabeli, lub zanim wiersz w tabeli zostanie zmieniony tymi danymi.
Możemy wykonać takie działania, ponieważ istnieją dwie zmienne :new oraz :old zawierające cały modyfikowany, dodawany lub usuwany wiersz. Korzystając z tych zmiennych możemy przed wstawieniem danych do tabeli pobrać je, zmodyfikować, a następnie wstawić już zmienione dane.
Aby móc korzystać ze zmiennych :new i :old muszę dodać dodatkową klauzulę „FOR EACH ROW” do definicji wyzwalacza.
Na poniższym przykładzie prezentuję przykład modyfikacji danych wstawianych do tabeli. Musimy pamiętać, by takie operacje jak modyfikacje wstawianych danych wykonywać w wyzwalaczu uruchamianym PRZED zdarzeniem, a nie po.



Nakładając wyzwalacz na UPDATE tabeli mam również dostęp do zmiennej :old. Zawiera ona zmieniany wiersz w postaci w jakiej występował przed modyfikacją. Mogę więc określić jak zmieniana nazwa stanowiska brzmiała przed, a jak po zmianie wiersza:
 



Mam też możliwość zdefiniowania wyzwalacza który będzie się wykonywał tylko jeśli spełniony zostanie warunek dotyczący wprowadzanych danych.


Uwaga: W ciele wyzwalaczy nie może być instrukcji które modyfikują strukturę lub zawartość tabeli na którą nałożony jest wyzwalacz. Nie mogą też zawierać instrukcji wpływających na transakcję ani odwoływać się do podprogramów zawierających takie instrukcje.


W wyzwalaczu CUSTOM3 wyświetlona zostanie informacja tylko jeśli wartość MAX_SALARY wstawianego wiersza będzie wyższa niż 10000. Zwróć uwagę, że wykonywane są również inne wyzwalacze które wcześniej nałożyłem na działania na tej tabeli.





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.

Brak komentarzy:

Prześlij komentarz