Wprowadzenie do wyzwalaczy w PL / SQL

Wyzwalacze bazy danych to kod PL / SQL, który wykonuje się na podstawie zdarzenia w bazie danych, takiego jak INSERT, UPDATE, Alter, Drop, Login, Logoff itp. Wyzwalacze bazy danych pomagają nam w utrzymaniu prostych i krótkich kodów SQL. Wyzwalacze bazy danych są przydatne w zarządzaniu wszystkimi zmianami i śledzeniu wszystkich tych zmian za pomocą Aktualizuj, Usuń, Zmień, Zaloguj się, Wyloguj itp. W bazie danych, schematach bazy danych i jej tabelach.

Mamy 3 rodzaje wyzwalaczy DB:

1. DML (Data Manipulation Language): wyzwalacze DML wykonują polecenia INSERT, UPDATE & DELETE w tabelach.

2. DDL (język definicji danych): ten wyzwalacz wykonuje się podczas tworzenia, zmieniania, upuszczania, analizy, audytu, przyznawania itp.

3. Zdarzenie bazy danych: Wykonanie wyzwalaczy zdarzeń DB na podstawie LOGON, LOGOFF, Suspend, Uruchomienie bazy danych, zamknięcie bazy danych i innych błędów DB.

Oto jeszcze jedna cecha DB Trigger:

Wyzwalacz DB: jest to kod PL / SQL powiązany z widokiem tabeli lub zdarzeniem DB.
Wykonuje się na podstawie aktywności DB

  • Przed / Po, WSTAW, AKTUALIZUJ, USUŃ.
  • Wykonywany raz na zdarzenie wyzwalające lub raz na wiersz, na który wpływ ma wyzwalacz.

Wykonaj na podstawie uruchamiania / zamykania / błędu systemu / zamykania ładowania danych.

Jak tworzyć wyzwalacze w PL / SQL?

Oto następujące kroki, aby utworzyć wyzwalacze w PL / SQL

1. Wyzwalacze DML

Ten wyzwalacz jest dalej podzielony na dwa typy:

  • Po wyzwalaczach / Dla wyzwalaczy
  • Zamiast wyzwalaczy

PO wyzwoleniu spustu po uruchomieniu akcji. Instrukcje DELETE, UPDATE i INSERT są przykładem wyzwalaczy After.
ZAMIAST wyzwalaczy działa zamiast akcji. Częścią są również instrukcje DELETE, UPDATE i INSERT.

Przykład:

W naszych przykładach wykorzystamy tabele Employee i EmployeeAudit.

Skrypt SQL, aby utworzyć tabelę pracowników:

CREATE TABLE Employee
(
Id int Primary Key,
Name nvarchar(30),
Salary int,
Gender nvarchar(10),
DepartmentId int
)
Insert data into Employee table
Insert into Employee values (1, 'Prakash', 5000, 'Male', 3)
Insert into Employee values (2, 'Robert', 3400, 'Male', 2)
Insert into Employee values (3, 'Anji', 6000, 'Female', 1)

Tabela pracowników

Skrypt SQL do utworzenia tabeli EmployeeAudit:

CREATE TABLE EmployeeAudit
(
Id int identity(1, 1) primary key,
AuditData nvarchar(1000)
)

przechwycimy identyfikator oraz datę i godzinę Ilekroć nowy pracownik zostanie dodany w tabeli EmployeeAudit. Jest to najłatwiejszy program do zdefiniowania PO WYŁĄCZENIU dla zdarzenia INSERT.

2. Wyzwalacze DDL

Służy głównie do zapobiegania określonym zmianom schematu bazy danych

Składnia

CREATE TRIGGER trigger_name
ON (DATABASE | ALL SERVER)
(WITH ddl_trigger_option) FOR (event_type | event_group )
AS (sql_statement)

nazwa_ wyzwalacza służy do określenia zdefiniowanej nazwy wyzwalacza po słowach kluczowych CREATE TRIGGER. nie trzeba też określać schematu bazy danych, ponieważ nie jest on powiązany z rzeczywistą tabelą ani widokiem bazy danych.

Baza danych | Cały serwer: Jeśli wyzwalacz zostanie uruchomiony na zdarzeniach o zasięgu serwera, możemy użyć WSZYSTKIEGO SERWERA. Użyj DATABASE, jeśli wyzwalacz jest uruchamiany w przypadku zdarzeń o zasięgu bazy danych

ddl_trigger_option: określa klauzulę ENCRYPTION i / lub EXECUTE AS.

typ_wydarzenia | grupa_zdarzenia: grupa_zdarzenia jest grupą zdarzenia typu_zdarzenie, takiego jak DDL_TABLE_EVENTS & Typ_zdarzenia wskazuje zdarzenie DDL, które powoduje uruchomienie wyzwalacza, takie jak ALTER_TABLE, CREATE_TABLE itp.

Przykład:

Wyzwalanie wykonania w odpowiedzi na zdarzenie CREATE_TABLE DDL.

CREATE TRIGGER MyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
Print 'New table created'
END

Sprawdź, czy wyzwalacz został utworzony w folderze Wyzwalacz bazy danych, a jeśli go nie masz, odśwież folder (Wyzwalacz bazy danych).

3. Zdarzenie bazy danych

Może być używany do dowolnych zdarzeń DB, takich jak LOGON, LOGOFF, Suspend, uruchomienie bazy danych, zamknięcie bazy danych

Składnia:

CREATE (OR REPLACE) TRIGGER trigger_name
(BEFORE | AFTER) (database_event) ON (DATABASE | SCHEMA)
DECLARE
…some code…
END;

nazwa_ wyzwalacza służy do określenia zdefiniowanej nazwy wyzwalacza po słowach kluczowych CREATE TRIGGER.

database_event w zasadzie zdarzenie występuje w bazach danych, takich jak wylogowanie, logowanie, zamknięcie itp. Możemy wybrać bazę danych lub schemat, w którym zadziała ten wyzwalacz.

Przykład: wyzwalacz wylogowania

Tutaj możemy zademonstrować wyzwalacz zdarzeń bazy danych LOGOFF. Ten wyzwalacz utworzy jeden rekord w tabeli (wylogowanie), gdy ktoś się rozłączy.
Ten wyzwalacz zarejestruje nazwę użytkownika i czas rozłączenia.

Tworzenie tabeli wylogowania:

create table logoff_table (
who varchar2(30),
when date
);

Tworzenie wyzwalacza wylogowania:

create trigger trg_logoff
before logoff on database
begin
insert into logoff_table values(sys_context('userenv', 'session_user'), sysdate);
end;
/

Tutaj w powyższym wyzwalaczu stworzyliśmy Tigger do monitorowania wylogowania dowolnego użytkownika. Ten wyzwalacz zostanie wykonany po wylogowaniu użytkowników bazy danych. Tabela wylogowania przechowuje niektóre szczegóły Nazwa użytkownika i czas wylogowania (Możesz określić szczegóły zgodnie z wymaganiami).

W ten sam sposób możemy utworzyć kolejny wyzwalacz, który będzie monitorować i przechowywać dane logowania dla dowolnej konkretnej bazy danych. Wyzwalacze zdarzeń bazy danych są pomocne w rozwiązywaniu problemów.
Wszystkie nazwy tabel są specyficzne dla wymagań, możemy zmienić ich nazwy zgodnie z wymaganiami.

Zaleta wyzwalaczy w PL / SQL

  • Dobre dla ścieżek audytu.
  • Dobry do manipulowania danymi.
  • Egzekwuj złożone schematy bezpieczeństwa.
  • Egzekwuj reguły biznesowe.
  • Zapobiegaj zmianom w bazie danych i schemacie.
  • Kod PL / SQL jest krótszy przy użyciu wyzwalaczy.
  • Śledź zmiany w bazach danych, schematach i tabelach DB.
  • Zarządzanie rekordami działań w bazie danych jest pomocne w rozwiązywaniu problemów.
  • Nie trzeba ręcznie sprawdzać zmian w bazie danych, wyzwalacz zawsze sam podejmuje działania w przypadku wystąpienia określonego zdarzenia.

Wniosek

W tym rozdziale dowiedzieliśmy się o typach wyzwalaczy, takich jak wyzwalacze zdarzeń DDL, DML i bazy danych. Dowiedzieliśmy się również, że wyzwalacz DDL może być używany do INSERT, UPDATE, DELETE itp. Instrukcje i wyzwalacze DML są zaprojektowane do tworzenia, zmieniania, upuszczania itp. W tabelach bazy danych, ale wyzwalacze zdarzeń bazy danych działają, gdy istnieje wylogowanie, Zawieszenie, uruchamianie bazy danych wykonywane w bazie danych.

Składnia każdego wyzwalacza jest łatwa do zrozumienia i można go łatwo przekonwertować na kod PL / SQL. Program PL / SQL, taki jak Wyzwolenie wylogowania, przedstawił przegląd działania wyzwalacza bazy danych w przypadku wylogowania użytkownika z jego bazy danych. W DML Trigger pokazaliśmy, jak będzie działać PO Trigger, gdy pojawi się nowy wpis każdego nowego pracownika. Wyzwalacze DDL są przydatne w zapobieganiu jakimkolwiek konkretnym zmianom w bazie danych i schemacie.

Polecane artykuły

Jest to przewodnik po wyzwalaczach w PL / SQL. Tutaj omawiamy, jak tworzyć wyzwalacze w PL / SQL z przykładami i zaletami. Możesz także spojrzeć na następujący artykuł.

  1. Kursory w PL / SQL
  2. Instrukcja CASE w języku PL / SQL
  3. Co to jest PL / SQL?
  4. Polecenia PL / SQL
  5. Klucz podstawowy kontra klucz obcy | Najważniejsze różnice