triggers pl sql tutorial with example programs
Erfahren Sie alles über Trigger in PL SQL, ihre Typen, Verwendung und Vorteile:
In dem PL SQL-Transaktionen Tutorial der PL / SQL-Serie Wir haben etwas über die Anweisungen COMMIT, ROLLBACK und SAVEPOINTS gelernt.
In diesem Artikel werden Trigger in PL SQL und ihre Vorteile, Typen und Verwendung untersucht. Wir werden anhand von Beispielprogrammen erläutern, wie PL / SQL-Trigger erstellt, ausgelöst, aktiviert und deaktiviert werden.
Beginnen wir mit der Diskussion !!
Was du lernen wirst:
Trigger in PL / SQL
Ein gespeichertes Programm, das standardmäßig oder durch einige Ereignisse ausgelöst wird, wird als Trigger bezeichnet.
Ein Trigger wird aufgrund der folgenden unten aufgeführten Umstände ausgeführt:
- Durch eine DDL-Anweisung (Data Definition Language) wie DROP, ALTER oder CREATE.
- Durch eine DML-Anweisung (Data Manipulation Language) wie UPDATE, INSERT oder DELETE.
- Durch eine Datenbankaktion wie SHUTDOWN, STARTUP, LOGOFF und LOGON.
Ein Trigger kann für ein Schema, eine Ansicht oder eine Datenbank festgelegt werden, an die ein Ereignis angehängt ist.
Vorteile von Triggern
Diese sind unten aufgeführt:
- Fähigkeit zur Durchsetzung der referenziellen Integrität.
- Fähigkeit zur Überwachung.
- Möglichkeit zum Protokollieren und Speichern von Daten beim Zugriff auf Tabellen.
- Möglichkeit, ungültige Transaktionen zu stoppen.
- Möglichkeit zur Durchsetzung von Sicherheitsfunktionen.
- Standardmäßig können abgeleitete Spaltenwerte erstellt werden.
Verwendung von Triggern
Diese sind unten aufgeführt:
- Verhindert unsachgemäße Transaktionen.
- Sammelt Informationen zur Tabellennutzung.
- Überwachen Sie kritische Informationen.
Arten von Triggern in PL / SQL
Die Trigger können anhand von Parametern kategorisiert werden. Die Arten von Triggern sind unten aufgeführt:
# 1) Kategorisierung auf Trigger-Ebene.
- ROW Level Trigger: Es wird für jeden Datensatz ausgeführt, der durch eine DML-Anweisung aktualisiert wurde.
- STATEMENT Level Trigger: Es wird nur einmal von der Ereignisanweisung ausgeführt.
# 2) Kategorisierung nach dem Trigger-Timing.
- VOR dem Auslösen: Es wird vor dem bestimmten Ereignis ausgeführt, das stattgefunden hat.
- NACH dem Auslösen: Es wird nach dem bestimmten Ereignis ausgeführt, das stattgefunden hat.
- STATT Auslöser: Es handelt sich um eine spezielle Art von Trigger, die für jeden Datensatz ausgeführt wird, der durch eine DML-Anweisung aktualisiert wurde.
# 3) Kategorisierung des Triggerereignisses.
- DML-Trigger: Es wird ausgeführt, wenn ein DML-Ereignis wie UPDATE, INSERT oder DELETE ausgeführt wird.
- DDL-Trigger: Es wird ausgeführt, wenn ein DDL-Ereignis wie DROP, ALTER oder CREATE ausgeführt wird.
- DATABASE-Trigger: Es wird ausgeführt, wenn ein Datenbankereignis wie SHUTDOWN, STARTUP, LOGOFF und LOGON stattgefunden hat.
Trigger erstellen
Syntax zum Erstellen eines Triggers:
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;
Hier,
- CREATE (OR REPLACE) TRIGGER trigger_n - Dies dient zum Erstellen, Ersetzen oder Aktualisieren eines Triggers mit dem Namen trigger_n.
- NACH DEM - Hiermit bestimmen Sie den Zeitpunkt, zu dem der Auslöser ausgelöst wird. STATT OF dient zum Erstellen eines Triggers mit einer Ansicht.
- LÖSCHEN - Dies dient zum Ausführen der DML-Aktionen.
- (OF column_n) - Hiermit wird der Spaltenname erwähnt, der geändert werden soll.
- (ON table_n) - Hiermit wird der Tabellenname erwähnt, der an den Trigger angehängt ist.
- (ALT WIE NEU WIE NEU BEZIEHEN) - Dies dient zum Verweisen auf die alten und neuen Werte durch die DML-Anweisung wie UPDATE, INSERT oder DELETE.
- (FÜR JEDE REIHE) - Dies bestimmt einen Trigger auf Zeilenebene, d. H. Der Trigger wird für jede geänderte Zeile ausgelöst, andernfalls wird der Trigger nur einmal ausgelöst, wenn die SQL-Anweisung ausgeführt wird, was als Trigger auf Tabellenebene bekannt ist.
- WANN (Bedingung) - Dies gibt eine Bedingung für Zeilen an, für die der Trigger ausgeführt werden würde. Dies gilt nur für Trigger auf Zeilenebene.
Betrachten wir noch einmal eine Tabelle mit dem Namen SCHÜLER .
Lassen Sie uns nun einen Trigger auf Zeilenebene für die STUDENT-Tabelle erstellen, der von der DML-Anweisung wie UPDATE, INSERT oder DELETE für diese Tabelle ausgeführt wird. Der Trigger berechnet und zeigt den Altersunterschied zwischen aktuellen und vorherigen Werten an.
Code-Implementierung für die Triggererstellung:
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; /
Ausgabe des obigen Codes:
Der obige Code weist einige wichtige Merkmale auf. Sie sind unten aufgeführt:
- Für einen Trigger auf Tabellenebene sind ALTE und NEUE Adressen nicht verfügbar. Wir können diese Referenzen für Trigger auf Datensatzebene verwenden.
- Wenn wir eine andere Abfrage im selben Trigger anwenden möchten, müssen wir das Schlüsselwort AFTER als Trigger verwenden, der eine Tabelle erst wieder ändern kann, nachdem die vorherigen Änderungen ordnungsgemäß angewendet wurden.
- Der oben beschriebene Trigger wird vor einer DELETE-, UPDATE- oder INSERT-Aktion in der Tabelle ausgeführt. Wir können jedoch auch einen Auslöser entwerfen, der auch bei einer einzelnen Operation ausgelöst wird ( zum Beispiel, AFTER INSERT, das den Trigger ausführt, wenn ein Datensatz mithilfe der INSERT-Operation in die Tabelle eingefügt wird.
Trigger auslösen In PL SQL
Um den obigen Trigger auszulösen, müssen wir alle DML-Operationen wie DELETE, INSERT oder UPDATE für die Tabelle ausführen. Lassen Sie uns mit Hilfe der folgenden Abfrage noch einmal einige Werte in die Student-Tabelle einfügen:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Sobald der INSERT-Vorgang in der Student-Tabelle abgeschlossen ist, wird der Trigger aktiviert age_changes wird ausgeführt.
Die Ausgabe des Abfragecodes:
Da ein neuer Datensatz erstellt wird und das vorherige Alter nicht verfügbar ist, werden das vorherige Alter und Altersunterschied Die Berechnung wird in der obigen Ausgabe als null angegeben.
Lassen Sie uns jetzt Ändern Sie einen Datensatz mit der UPDATE-Anweisung mithilfe der folgenden Abfrage:
UPDATE student SET age = age + 1 WHERE code = 7;
Sobald der UPDATE-Vorgang in der Student-Tabelle abgeschlossen ist, wird der Trigger aktiviert age_changes wird ausgeführt.
Die Ausgabe der obigen Abfrage:
NEUE und ALTE Klausel
Eine neue Klausel wird verwendet, um den neuen Wert für die Spalten der Tabelle für die Triggerausführung zu speichern. Es wird in Triggern auf Datensatzebene verwendet. Eine alte Klausel wird verwendet, um den alten Wert für die Spalten der Tabelle für die Triggerausführung zu speichern. Es wird auch in Triggern auf Datensatzebene verwendet.
Daher wird die neue und alte Klausel verwendet, um die neuen und alten Werte innerhalb eines Triggerkörpers zu halten und auf diese zu verweisen.
Zusammengesetzter Auslöser
Ein zusammengesetzter Trigger wird verwendet, um die Operationen für alle Zeitpunkte innerhalb des Triggerkörpers zu definieren. Es bietet die Möglichkeit, alle Aktionen zu unterschiedlichen Zeitpunkten in einem Triggerkörper zusammenzuführen.
Die verschiedenen Zeitpunkte sind unten aufgeführt:
- NACH STATEMENT-Ebene
- VOR REIHE
- NACH REIHEN-Level
- VOR DER ERKLÄRUNG
Trigger deaktivieren und aktivieren
Wir können einen Trigger mit Hilfe einer DDL-Anweisung ALTER aktivieren und deaktivieren.
Syntax:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Hier ist trigger_n der Name des Triggers, den wir aktivieren oder deaktivieren möchten.
Deaktivieren wir nun den Trigger mithilfe der folgenden Abfrage:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Die Ausgabe des Abfragecodes:
Lassen Sie uns nun denselben Trigger mithilfe der folgenden Abfrage aktivieren:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Die Ausgabe des Abfragecodes:
Häufig gestellte Fragen und Antworten
F # 1) Wie viele Arten von Triggern gibt es in PL SQL?
Antworten: In PL / SQL gibt es zwei Arten von Triggern. Sie sind Trigger auf Zeilenebene und Trigger auf Anweisungsebene.
F # 2) Welche Art von Trigger verwendet die alten und neuen Qualifikationsmerkmale?
So finden Sie den Netzwerksicherheitsschlüssel auf dem Router
Antworten: Die alten und neuen Qualifikationsmerkmale können nur mit Triggern auf Zeilenebene verwendet werden. Sie sind nicht mit Triggern auf Anweisungsebene kompatibel.
F # 3) Was ist der Unterschied zwischen neuem und altem Trigger?
Antworten: Ein neuer Trigger gibt eine Liste neuer Versionen der Datensatzobjekte an. Ein alter Trigger gibt eine Liste alter Versionen der Datensatzobjekte an.
F # 4) Was ist ein Trigger auf Zeilenebene in PL SQL?
Antworten: Ein Trigger auf Zeilenebene wird aufgrund eines Ereignisses nur einmal für eine Zeile ausgelöst. Zum Beispiel, Wenn das Löschen als auslösendes Ereignis für eine Tabelle betrachtet wird und eine Löschanweisung zwei Zeilen betrifft, wird der Auslöser zweimal ausgelöst.
F # 5) Was ist ein Auslöser? Erklären Sie mit einem Beispiel.
Antworten: Ein Trigger ist eine gespeicherte Prozedur, die standardmäßig ausgelöst wird, wenn ein Vorfall in der Datenbank auftritt. Zum Beispiel, Wenn eine Zeile in eine Tabelle eingefügt wird oder wir einige Werte in der Tabelle ändern.
F # 6) Was sind die After-Trigger?
Antworten: Die After-Trigger werden nach der Ausführung einer DML-Anweisung, jedoch vor dem Festschreiben an die Datenbank ausgelöst. Es ist auch in der Lage, seine Aktion zurückzusetzen.
Fazit
In diesem Tutorial haben wir einige grundlegende Konzepte von Triggern in PL SQL erläutert, die für die Verwendung während der Programmierung unerlässlich sind. Wir haben die folgenden Themen behandelt:
- Löst aus.
- Arten von Triggern.
- Verschiedene Operationen an Triggern.
<< PREV Tutorial | NÄCHSTES Tutorial >>