Trigger

Ein Trigger ist eine PL/SQL-Einheit, die in der Datenbank gespeichert ist, und die (falls sie aktiviert ist) automatisch ausgeführt werden, wenn ein bestimmtes Ereignis eintritt.

Ein Trigger hat die folgende Struktur:

TRIGGER trigger_name
  triggering_event
  [ trigger_restriction ]
BEGIN
  triggered_action;
END;

Der trigger_name muss für Trigger im Schema einzigartig sein. Ein Trigger darf den gleichen Namen wie ein anderes Objekt, z.B. eine Tabelle, im Schema haben, Oracle empfiehlt allerdings, dass Benennungsrichtlinien verwendet werden, die Verwechslungen ausschließen.

Wenn der Trigger den Status aktiviert hat, sorgt das triggering_event dafür, dass die Datenbank die trigger_action ausführt, wenn die trigger_restriction entweder TRUE oder weggelassen wird. Das Ereignis triggering_event ist einer Tabelle, einer Ansicht, einem Schema oder einer Datenbank zugeordnet, und es handelt sich dabei um eines der folgenden Ereignisse:

Wenn der Trigger den Status deaktiviert hat, wird vom triggering_event keine Ausführung der Aktion "trigger_action" in der Datenbank verursacht, selbst wenn trigger_restriction auf TRUE gesetzt ist oder weggelassen wurde.

Standardmäßig wird ein Trigger in aktiviertem Zustand erstellt. Sie können einen aktivierten Trigger deaktivieren sowie einen deaktivierten aktivieren.

Im Gegensatz zu einem Unterprogramm kann ein Trigger nicht direkt aufgerufen werden. Ein Trigger wird nur durch das ihn auslösende Event aufgerufen, wobei dies von beliebigen Benutzern oder Anwendungen verursacht werden kann. Es ist nicht unbedingt ersichtlich, dass ein Trigger ausgeführt wird, solange dabei kein Fehler verursacht wird, der nicht korrekt behandelt wird.

Ein einfacher Trigger kann zu genau einem der folgenden Zeitpunkte ausgelöst werden:

Ein Compound-Trigger kann zu verschiedenen Zeitpunkten ausgelöst wird. Informationen zu Compound-Triggern finden Sie in derOracle Database PL/SQL Language Reference.

Der Trigger INSTEAD OF ist für eine Ansicht definiert, das zugehörige auslösende Event ist eine DML-Anweisung. Statt die DML-Anweisung auszuführen, führt Oracle Database den Trigger INSTEAD OF aus. Weitere Informationen finden Sie unter Trigger INSTEAD OF erstellen.

Ein System-Trigger ist für ein Schema oder die Datenbank definiert. Ein Trigger, der für ein Schema definiert ist, wird für jedes Event ausgelöst, das dem Eigentümer des Schemas zugeordnet ist, dem aktuellen Benutzer. Ein Trigger, der für eine Datenbank definiert ist, wird für jedes Event ausgelöst, das allen Benutzern zugeordnet ist.

Ein Verwendungszweck für Trigger ist das Erzwingen von Geschäftsregeln, die für alle Client-Anwendungen gelten. Beispiel: Die Daten, die der Tabelle EMPLOYEES hinzugefügt wurden, müssen ein bestimmtes Format haben, und viele Client-Anwendungen können Daten zu dieser Tabelle hinzufügen. Ein Trigger zu der Tabelle kann sicherstellen, dass das richtige Format für alle Daten hinzugefügt wird. Da der Trigger ausgeführt wird, sobald ein Client Daten zur Tabelle hinzufügt, kann kein Client die Triggerregeln umgehen. Darüber hinaus kann der Code, der die Einhaltung der Regeln erzwingt, nur im Trigger gespeichert und verwaltet werden, statt in allen Client-Anwendungen. Andere Verwendungszwecke von Triggern finden Sie in der Oracle Database PL/SQL Language Reference.

Siehe auch: Oracle Database PL/SQL Language Reference für ausführliche Informationen über Trigger