PL/SQL - Trigger: Dein freundlicher Guide zur Datenbank-Automatisierung

Hallo da draußen, zukünftige Datenbank-Zauberer! Heute tauchen wir ein in die magische Welt der PL/SQL-Triggers. Keine Sorge, wenn du neu im Programmieren bist – ich werde dein treuer Guide auf diesem Abenteuer sein. Am Ende dieses Tutorials wirst du Triggers wie ein Profi erstellen können!

PL/SQL - Triggers

Was sind eigentlich Triggers?

Stell dir vor, du bist eine Bibliothekarin (bleib mir bitte dabei). Jedes Mal, wenn ein Buch ausgeliehen wird, musst du ein Log aktualisieren, überprüfen, ob es überfällig ist, und vielleicht eine Erinnerung an den Entleiher senden. Dies manuell für jedes Buch zu tun, wäre mühsam! Hier kommen Triggers ins Spiel.

In der Datenbankwelt sind Triggers wie hilfreiche kleine Elfen, die automatisch Aktionen ausführen, wenn bestimmte Ereignisse auftreten. Sie sind Stücke von Code, die als Reaktion auf spezifische Datenbankoperationen "ausgelöst" werden.

Triggers erstellen: Lasst uns unsere Hände schmutzig machen!

Nun, lassen uns unseren ersten Trigger erstellen. Wir beginnen einfach und arbeiten uns hinauf.

Grundstruktur eines Triggers

Hier ist die allgemeine Struktur eines Triggers:

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
[FOR EACH ROW]
[WHEN condition]
DECLARE
-- Variablendeklarationen
BEGIN
-- Trigger-Körper
EXCEPTION
-- Ausnahmeanalyse
END;
/

Lass dich davon nicht abschrecken! Wir werden es Stück für Stück auseinandernehmen.

Beispiel 1: Ein einfacher "Hallo, Welt!" Trigger

Lassen uns einen Trigger erstellen, der "Hallo, Welt!" ausgibt, wenn eine neue Zeile in eine Tabelle eingefügt wird:

CREATE OR REPLACE TRIGGER hello_world_trigger
AFTER INSERT ON employees
BEGIN
DBMS_OUTPUT.PUT_LINE('Hallo, Welt! Ein neuer Mitarbeiter wurde hinzugefügt!');
END;
/

Was passiert hier?

  • CREATE OR REPLACE TRIGGER: Dies tells der Datenbank, dass wir einen neuen Trigger erstellen (oder einen vorhandenen ersetzen).
  • AFTER INSERT ON employees: Unser Trigger wird ausgelöst, nachdem eine neue Zeile in die 'employees' Tabelle eingefügt wurde.
  • BEGIN...END: Hier platzieren wir unsere Trigger-Logik.
  • DBMS_OUTPUT.PUT_LINE: Dies ist nur eine schicke Möglichkeit, Text auszugeben.

Beispiel 2: Änderungen protokollieren

Lassen uns einen nützlicheren Trigger erstellen, der Änderungen in einer 'employees' Tabelle protokolliert:

CREATE OR REPLACE TRIGGER log_salary_changes
AFTER UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO salary_change_log (employee_id, old_salary, new_salary, change_date)
VALUES (:OLD.employee_id, :OLD.salary, :NEW.salary, SYSDATE);
END;
/

Was ist neu hier?

  • AFTER UPDATE OF salary: Dieser Trigger wird nur ausgelöst, wenn die 'salary' Spalte aktualisiert wird.
  • FOR EACH ROW: Dies bedeutet, der Trigger wird für jede betroffene Zeile ausgelöst.
  • :OLD und :NEW: Diese beziehen sich auf die alten und neuen Werte der aktualisierten Zeile.

Einen Trigger auslösen: Die Magie passiert

Nun, wo wir Triggers erstellt haben, wie können wir sie auslösen? Einfach! Indem wir die Datenbankoperationen ausführen, die sie überwachen.

Beispiel 3: Unsere Triggers auslösen

Sehen wir uns unsere Triggers in Aktion an:

-- Dies wird unseren 'hello_world_trigger' auslösen
INSERT INTO employees (employee_id, name, salary)
VALUES (1, 'John Doe', 50000);

-- Dies wird unseren 'log_salary_changes' Trigger auslösen
UPDATE employees
SET salary = 55000
WHERE employee_id = 1;

Wenn du diese Befehle ausführst, geschieht im Hintergrund, unsere Triggers springen in Aktion!

Arten von Triggers: Eine praktische Tabelle

Hier ist eine schnelle Referenztabelle der verschiedenen Trigger-Typen:

Trigger-Typ Beschreibung Beispielanwendung
BEFORE Wird vor der auslösenden Aktion ausgeführt Validieren oder ändern der Eingabedaten, bevor sie eingefügt werden
AFTER Wird nach der auslösenden Aktion ausgeführt Protokollieren von Änderungen oder Aktualisieren verwandter Tabellen
INSERT Wird bei INSERT-Operationen ausgeführt Automatisch Erstellen verwandter Datensätze
UPDATE Wird bei UPDATE-Operationen ausgeführt Verfolgen von Datenänderungen im Laufe der Zeit
DELETE Wird bei DELETE-Operationen ausgeführt Aufrechterhalten der Referenzintegrität
INSTEAD OF Wird mit Ansichten verwendet, um benutzerdefinierte INSERT, UPDATE oder DELETE-Operationen zu definieren Implementieren komplexer Ansichtenaktualisierungen

Abschluss: Du bist jetzt ein Trigger-Lehrling!

Glückwunsch! Du hast deine ersten Schritte in die Welt der PL/SQL-Triggers getan. Wir haben die Grundlagen des Erstellens von Triggers behandelt, sie in Aktion gesehen und sogar einen Blick auf die verschiedenen Arten geworfen.

Denke daran, Triggers sind mächtige Werkzeuge, aber mit großer Macht kommt große Verantwortung. Verwende sie weise, und sie werden deine Datenbankarbeit smarter, nicht härter machen.

Weiterüben, bleibe neugierig, und bevor du es weißt, wirst du ein Trigger-Virtuose! Frohes Coden, zukünftige Datenbank-Zauberer!

Credits: Image by storyset