Einführung in Trigger in PL / SQL

Datenbanktrigger sind der PL / SQL-Code, der basierend auf einem Ereignis in der Datenbank ausgeführt wird, z. B. INSERT, UPDATE, Alter, Drop, Login, Logoff usw. Datenbanktrigger helfen uns dabei, die SQL-Codes einfach und kurz zu halten. Datenbank-Trigger sind nützlich, um alle Änderungen zu verwalten und alle diese Änderungen mithilfe von Aktualisieren, Löschen, Ändern, Anmelden, Abmelden usw. in Datenbanken, Datenbankschemata und ihren Tabellen zu verfolgen.

Wir haben 3 Arten von DB-Triggern:

1. DML (Data Manipulation Language): DML-Trigger werden bei INSERT, UPDATE & DELETE in den Tabellen ausgeführt.

2. DDL (Data Definition Language): Dieser Trigger wird beim Erstellen, Ändern, Löschen, Analysieren, Überwachen, Gewähren usw. ausgeführt.

3. Datenbankereignis: Ausführung von DB-Ereignisauslösern basierend auf LOGON, LOGOFF, Suspend, Datenbankstart, Herunterfahren der Datenbank und anderen DB-Fehlern.

Hier ist ein weiteres Merkmal von DB-Triggern:

Ein DB-Trigger: Dies ist PL / SQL-Code, der mit einer Tabellenansicht oder einem DB-Ereignis verknüpft ist.
Wird basierend auf der DB-Aktivität ausgeführt

  • Vorher / Nachher, EINFÜGEN, AKTUALISIEREN, LÖSCHEN.
  • Wird einmal pro auslösendem Ereignis oder einmal pro Zeile ausgeführt, die vom Auslöser betroffen sind.

Ausführung basierend auf Start / Herunterfahren / Systemfehler / Herunterfahren des Datenladens.

Wie erstelle ich Trigger in PL / SQL?

In den folgenden Schritten werden Trigger in PL / SQL erstellt

1. DML-Trigger

Dieser Trigger ist weiter in zwei Typen unterteilt:

  • Nach Triggern / Nach Triggern
  • Anstelle von Triggern

AFTER Trigger wird nach Auslösen der Aktion ausgelöst. DELETE-, UPDATE- und INSERT-Anweisungen sind ein Beispiel für After-Trigger.
STATT der Trigger handelt anstelle der Aktion. DELETE-, UPDATE- und INSERT-Anweisungen sind ebenfalls Teil davon.

Beispiel:

Wir werden die Tabellen Employee und EmployeeAudit für unsere Beispiele verwenden.

SQL-Skript zum Erstellen einer Employee-Tabelle:

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)

Mitarbeitertabelle

SQL-Skript zum Erstellen der EmployeeAudit-Tabelle:

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

Wir erfassen die ID sowie das Datum und die Uhrzeit, wenn ein neuer Mitarbeiter in der EmployeeAudit-Tabelle hinzugefügt wird. Dies ist das einfachste Programm, um AFTER TRIGGER für das INSERT-Ereignis zu definieren.

2. DDL-Trigger

Es wird hauptsächlich verwendet, um bestimmte Änderungen an Ihrem Datenbankschema zu verhindern

Syntax

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

trigger_name soll den definierten Namen des Triggers nach den CREATE TRIGGER-Schlüsselwörtern angeben. Außerdem müssen Sie kein Datenbankschema angeben, da es sich nicht auf eine tatsächliche Datenbanktabelle oder -sicht bezieht.

Datenbank | Alle Server: Wenn der Trigger bei Ereignissen im Serverbereich ausgelöst wird, können wir ALL SERVER verwenden. Verwenden Sie DATABASE, wenn der Auslöser datenbankbezogene Ereignisse auslöst

ddl_trigger_option: Gibt die ENCRYPTION- und / oder EXECUTE AS-Klausel an.

event_type | event_group: Die event_group ist eine Gruppe von event_type-Ereignissen, z. B. DDL_TABLE_EVENTS. Der event_type gibt ein DDL-Ereignis an, das den Auslöser auslöst, z. B. ALTER_TABLE, CREATE_TABLE usw.

Beispiel:

Löst die Ausführung als Antwort auf das DDL-Ereignis CREATE_TABLE aus.

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

Überprüfen Sie, ob der Trigger im Ordner "Database Trigger" erstellt wurde. Wenn Sie ihn nicht erhalten, aktualisieren Sie den Ordner (Database Trigger).

3. Datenbankereignis

Es kann für alle DB-Ereignisse wie LOGON, LOGOFF, Suspend, Datenbankstart und Herunterfahren der Datenbank verwendet werden

Syntax:

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

trigger_name soll den definierten Namen des Triggers nach den CREATE TRIGGER-Schlüsselwörtern angeben.

Das Ereignis database_event tritt grundsätzlich in Datenbanken wie Abmelden, Anmelden, Herunterfahren usw. auf. Wir können auswählen, welche Datenbank oder welches Schema dieser Auslöser verwenden soll.

Beispiel: Abmeldetrigger

Hier können wir den LOGOFF Database Event Trigger demonstrieren. Dieser Trigger erstellt einen Datensatz in einer Tabelle (Abmeldung), wenn eine Verbindung getrennt wird.
Dieser Trigger zeichnet den Namen des Benutzers und den Zeitpunkt der Trennung auf.

Erstellen einer Abmeldetabelle:

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

Erstellen eines Abmeldetriggers:

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

Hier im obigen Trigger haben wir Tigger erstellt, um die Abmeldung eines Benutzers zu überwachen. Dieser Trigger wird nach dem Abmelden von Datenbankbenutzern ausgeführt. In der Abmeldetabelle werden einige Details zum Benutzernamen und zur Abmeldezeit gespeichert.

Ebenso können wir einen weiteren Auslöser erstellen, der die Anmeldedetails für eine bestimmte Datenbank überwacht und speichert. Datenbankereignisauslöser sind bei der Problembehandlung hilfreich.
Alle Tabellennamen sind anforderungsspezifisch. Wir können ihre Namen gemäß den Anforderungen ändern.

Vorteil von Triggern in PL / SQL

  • Gut für Audit Trails.
  • Gut für die Manipulation von Daten.
  • Erzwingen Sie komplexe Sicherheitsschemata.
  • Geschäftsregeln durchsetzen.
  • Verhindern Sie Änderungen in der Datenbank und im Schema.
  • PL / SQL-Code ist mithilfe von Triggern kürzer.
  • Verfolgen Sie die Änderungen in Datenbank-, Schema- und DB-Tabellen.
  • Das Verwalten von Aktionsdatensätzen in der Datenbank ist bei der Problembehandlung hilfreich.
  • Die Änderungen in der Datenbank müssen nicht manuell überprüft werden. Der Trigger wird immer selbst bei einem bestimmten Ereignis ausgeführt.

Fazit

In diesem Kapitel haben wir uns mit Triggertypen wie DDL-, DML- und Database-Ereignis-Triggern vertraut gemacht. Wir haben auch gelernt, dass ein DDL-Trigger für INSERT, UPDATE, DELETE usw. verwendet werden kann. Anweisungen und DML-Trigger sind für Create, Alter, Drop usw. in Datenbanktabellen konzipiert, aber Datenbankereignistrigger funktionieren, wenn eine Abmeldung bei der Anmeldung vorliegt. Anhalten, Datenbankstartaktion, die in der Datenbank ausgeführt wird.

Die Syntax jedes Triggers ist leicht zu verstehen und kann leicht in PL / SQL-Code konvertiert werden. PL / SQL-Programme wie "Ausgelöste Abmeldung" bieten einen Überblick über die Funktionsweise des Datenbank-Triggers, falls sich Benutzer von der Datenbank abmelden. In DML Trigger haben wir gezeigt, wie AFTER Trigger funktioniert, wenn ein neuer Eintrag eines neuen Mitarbeiters vorliegt. DDL-Trigger sind hilfreich, um bestimmte Änderungen in der Datenbank und im Schema zu verhindern.

Empfohlene Artikel

Dies ist eine Anleitung zu Triggern in PL / SQL. Hier wird erläutert, wie Trigger in PL / SQL mit Beispielen und Vorteilen erstellt werden. Sie können sich auch den folgenden Artikel ansehen.

  1. Cursor in PL / SQL
  2. CASE-Anweisung in PL / SQL
  3. Was ist PL / SQL?
  4. PL / SQL-Befehle
  5. Primärschlüssel vs Fremdschlüssel | Top Unterschiede