triggers pl sql tutorial with example programs
Dowiedz się wszystkiego o wyzwalaczach w PL SQL, ich typach, zastosowaniu i zaletach:
w Transakcje PL SQL samouczek Seria PL / SQL , dowiedzieliśmy się o instrukcjach COMMIT, ROLLBACK i SAVEPOINTS.
W tym artykule zbadamy wyzwalacze w PL SQL oraz ich zalety, typy i zastosowanie. Omówimy, jak tworzyć, wyzwalać, włączać i wyłączać wyzwalacze PL / SQL za pomocą przykładowych programów.
Zacznijmy od dyskusji !!
Czego się nauczysz:
Wyzwalacze w PL / SQL
Program przechowywany, który jest uruchamiany domyślnie lub przez niektóre zdarzenia, nazywany jest wyzwalaczem.
Wyzwalacz jest wykonywany z powodu następujących okoliczności wymienionych poniżej:
- Za pomocą instrukcji DDL (Data Definition Language), takiej jak DROP, ALTER lub CREATE.
- Za pomocą instrukcji DML (Data Manipulation Language), takiej jak UPDATE, INSERT lub DELETE.
- Przez akcję bazy danych, taką jak SHUTDOWN, STARTUP, LOGOFF i LOGON.
Wyzwalacz można ustawić w schemacie, widoku lub bazie danych, do której jest dołączone zdarzenie.
Zalety wyzwalaczy
Są one wymienione poniżej:
- Zdolność do wymuszania integralności referencyjnej.
- Możliwość monitorowania.
- Możliwość logowania i przechowywania danych o dostępie do tabel.
- Możliwość zatrzymania transakcji, które nie są ważne.
- Możliwość wymuszania funkcji bezpieczeństwa.
- Możliwość domyślnego tworzenia wartości kolumn pochodnych.
Zastosowania wyzwalaczy
Są one wymienione poniżej:
- Zapobiega niewłaściwym transakcjom.
- Gromadzi informacje o wykorzystaniu tabeli.
- Monitoruj krytyczne informacje.
Rodzaje wyzwalaczy w PL / SQL
Wyzwalacze można podzielić na kategorie na podstawie parametrów. Rodzaje wyzwalaczy są wymienione poniżej:
# 1) Kategoryzacja na poziomie wyzwalania.
- Wyzwalacz poziomu ROW: Jest wykonywany dla każdego rekordu, który został zaktualizowany przez instrukcję DML.
- OŚWIADCZENIE Wyzwalacz poziomu: Jest wykonywany tylko raz przez instrukcję zdarzenia.
# 2) Kategoryzacja czasu wyzwalania.
- PRZED wyzwalaczem: Jest wykonywany przed określonym zdarzeniem, które miało miejsce.
- PO wyzwoleniu: Jest wykonywany po określonym zdarzeniu, które miało miejsce.
- ZAMIAST wyzwalacza: Jest to specjalny typ wyzwalacza i jest wykonywany dla każdego rekordu, który został zaktualizowany przez instrukcję DML.
# 3) Kategoryzacja zdarzenia wyzwalającego.
- Wyzwalacz DML: Jest wykonywany, jeśli zostanie wykonane zdarzenie DML, takie jak UPDATE, INSERT lub DELETE.
- Wyzwalacz DDL: Jest wykonywany, jeśli wykonywane jest zdarzenie DDL, takie jak DROP, ALTER lub CREATE.
- Wyzwalacz bazy danych: Jest wykonywany, jeśli wystąpiło zdarzenie bazy danych, takie jak WYŁĄCZENIE, URUCHOMIENIE, WYLOGOWANIE i LOGON.
Utwórz wyzwalacze
Składnia tworzenia wyzwalacza:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Tutaj,
- UTWÓRZ (LUB WYMIEN) TRIGGER trigger_n - Służy do tworzenia, zastępowania lub aktualizowania wyzwalacza o nazwie trigger_n.
- PO - Służy do określenia czasu, w którym wyzwalacz zostanie uruchomiony. INSTEAD OF służy do tworzenia wyzwalacza z widokiem.
- KASOWAĆ - Służy do wykonywania działań DML.
- (OF kolumna_n) - Służy do podania nazwy kolumny, która ma zostać zmodyfikowana.
- (ON table_n) - Służy do podania nazwy tabeli, która jest dołączona do wyzwalacza.
- (ODNOSZENIE STARYCH JAK NOWYCH JAK N) - Służy do odwoływania się do starych i nowych wartości za pomocą instrukcji DML, takich jak UPDATE, INSERT lub DELETE.
- (DLA KAŻDEGO RZĘDU) - Określa wyzwalacz na poziomie wiersza, tj. Wyzwalacz będzie uruchamiany dla każdego modyfikowanego wiersza, w przeciwnym razie wyzwalacz zostanie uruchomiony tylko raz, gdy zostanie wykonana instrukcja SQL, co jest znane jako wyzwalacz na poziomie tabeli.
- KIEDY (warunek) - Daje to warunek dla wierszy, dla których zostanie wykonany wyzwalacz. Dotyczy to tylko wyzwalaczy na poziomie wiersza.
Rozważmy ponownie tabelę, która została nazwana STUDENT .
Utwórzmy teraz wyzwalacz na poziomie wiersza dla tabeli STUDENT, który byłby wykonywany przez instrukcję DML, taką jak UPDATE, INSERT lub DELETE w tej tabeli. Wyzwalacz obliczy i pokaże różnicę wieku między bieżącymi i poprzednimi wartościami.
Implementacja kodu do tworzenia wyzwalaczy:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Wyjście powyższego kodu:
Powyższy kod ma kilka ważnych cech. Są one wymienione poniżej:
- W przypadku wyzwalacza na poziomie tabeli adresy STARE i NOWE nie są dostępne. Możemy użyć tych odniesień do wyzwalaczy na poziomie rekordu.
- Jeśli chcemy zastosować inne zapytanie w tym samym wyzwalaczu, musimy użyć słowa kluczowego AFTER jako wyzwalacza, który może ponownie zmodyfikować tabelę dopiero po prawidłowym zastosowaniu poprzednich modyfikacji.
- Wyzwalacz omówiony powyżej jest wykonywany przed jakąkolwiek akcją DELETE, UPDATE lub INSERT na tabeli. Jednak możemy również zaprojektować wyzwalacz, który będzie uruchamiany również podczas jednej operacji ( na przykład, AFTER INSERT, który wywoła wyzwalacz za każdym razem, gdy rekord zostanie wstawiony za pomocą operacji INSERT na tabeli).
Wyzwalanie wyzwalaczy w PL SQL
Aby uruchomić powyższy wyzwalacz, musimy wykonać dowolną operację DML, taką jak DELETE, INSERT lub UPDATE na tabeli. Ponownie wstawmy pewne wartości do tabeli Student za pomocą poniższego zapytania:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Po zakończeniu operacji INSERT w tabeli Studentów, wyzwalacz age_changes zostaje stracony.
Dane wyjściowe kodu zapytania:
Ponieważ tworzony jest nowy rekord, a poprzedni wiek jest niedostępny, poprzedni wiek i Różnica wieku obliczenia mają wartość null w powyższym wyniku.
A teraz pozwól nam zmodyfikuj rekord za pomocą instrukcji UPDATE za pomocą poniższego zapytania:
UPDATE student SET age = age + 1 WHERE code = 7;
Po zakończeniu operacji UPDATE w tabeli uczniów wyzwalacz age_changes zostaje stracony.
Wynik powyższego zapytania:
Nowa i stara klauzula
Nowa klauzula jest używana do przechowywania nowej wartości dla kolumn tabeli na potrzeby wykonania wyzwalacza. Jest używany w wyzwalaczach poziomu rekordu. Stara klauzula jest używana do przechowywania starej wartości dla kolumn tabeli w celu wykonania wyzwalacza. Jest również używany w wyzwalaczach poziomu rekordu.
W ten sposób nowa i stara klauzula jest używana do przechowywania i odwoływania się do nowych i starych wartości w treści wyzwalacza.
Wyzwalacz złożony
Wyzwalacz złożony służy do definiowania operacji dla wszystkich punktów czasowych w treści wyzwalacza. Zapewnia możliwość scalenia wszystkich działań w różnych momentach w ramach jednego organu wyzwalającego.
Poniżej wymieniono różne punkty czasowe:
- PO poziomie OŚWIADCZENIA
- Poziom PRZED RZĘDEM
- PO poziomie RZĘDU
- Poziom PRZED WYDANIEM
Wyłącz i włącz wyzwalacz
Możemy włączać i wyłączać wyzwalacz za pomocą instrukcji DDL ALTER.
Składnia:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Tutaj trigger_n to nazwa wyzwalacza, który chcemy włączyć lub wyłączyć.
Teraz wyłączmy wyzwalacz za pomocą poniższego zapytania:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Dane wyjściowe kodu zapytania:
Teraz włączmy ten sam wyzwalacz za pomocą poniższego zapytania:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Dane wyjściowe kodu zapytania:
Często zadawane pytania i odpowiedzi
Pytanie 1) Ile typów wyzwalaczy istnieje w PL SQL?
Odpowiedź: W PL / SQL istnieją dwa typy wyzwalaczy. Są to wyzwalacze na poziomie wiersza i wyzwalacze na poziomie instrukcji.
P # 2) Jaki typ wyzwalacza wykorzystuje stare i nowe kwalifikatory?
najlepszy darmowy ripper dvd dla systemu Windows
Odpowiedź: Stare i nowe kwalifikatory mogą być używane tylko z wyzwalaczami na poziomie wiersza. Nie są one zgodne z wyzwalaczami na poziomie instrukcji.
P # 3) Jaka jest różnica między wyzwalaczem nowym a starym?
Odpowiedź: Nowy wyzwalacz wyświetla listę nowych wersji obiektów rekordu. Stary wyzwalacz wyświetla listę starych wersji obiektów rekordu.
Pytanie 4) Co to jest wyzwalacz na poziomie wiersza w języku PL SQL?
Odpowiedź: Wyzwalacz na poziomie wiersza jest wyzwalany dla wiersza tylko raz z powodu zdarzenia. Na przykład, jeżeli usunięcie jest traktowane jako zdarzenie wyzwalające tabelę, a instrukcja usuwania wpływa na dwa wiersze, to wyzwalacz powinien zostać uruchomiony dwukrotnie.
P # 5) Co to jest wyzwalacz? Wyjaśnij na przykładzie.
Odpowiedź: Wyzwalacz to procedura składowana, która jest uruchamiana domyślnie, jeśli w bazie danych wystąpi incydent. Na przykład, jeśli wiersz jest wstawiony do tabeli lub modyfikujemy niektóre wartości w tabeli.
P # 6) Jakie są wyzwalacze After?
Odpowiedź: Wyzwalacze typu after są uruchamiane po wykonaniu instrukcji DML, ale przed zatwierdzeniem do bazy danych. Jest również w stanie cofnąć swoją akcję.
Wniosek
W tym samouczku omówiliśmy kilka podstawowych koncepcji wyzwalaczy w języku PL SQL, które są niezbędne do korzystania z nich podczas programowania. Omówiliśmy następujące tematy wymienione poniżej:
- Wyzwalacze.
- Rodzaje wyzwalaczy.
- Różne operacje na wyzwalaczach.
<< PREV Tutorial | NASTĘPNY samouczek >>