Datenbanktrigger

Datenbanktrigger

Ein Datenbanktrigger, meist nur Trigger genannt, ist eine Funktionalität von diversen Datenbankmanagementsystemen, insbesondere von großen relationalen Datenbankmanagementsystemen.

Bei einer bestimmten Art der Änderungen (z. B. INSERT, UPDATE, DELETE bei SQL) von Daten in einer Tabelle wird ein gespeichertes Programm aufgerufen, das diese Änderung erlaubt, verhindert und/oder weitere Tätigkeiten vornimmt.

Inhaltsverzeichnis

Eigenschaften

Trigger werden u. a. zur Wahrung der Datenkonsistenz (Integritätschecks) und zum Einfügen, Löschen oder Ändern von Referenzdaten eingesetzt. Der Trigger wird ausgeführt („gefeuert“ in der Informatikfachsprache), wahlweise bevor die Änderung an der referenzierten Tabelle vorgenommen wird oder danach. Einige relationale Datenbankmanagementsysteme (RDBMS) bieten auch einen „Instead-of-Insert“-Trigger an (englisch für „statt Insert“), der es erlaubt, anstelle der INSERT-Operation andere SQL-Statements auszuführen.

Man muss festlegen, ob der Trigger pro verändertem Datensatz oder pro Statement-Aufruf ausgelöst werden soll. Beispiel: Wenn ein Update-Statement 100 Sätze verändert, dann wird im ersten Fall der Trigger 100 mal aktiviert und im zweiten Fall nur einmal.

Da Trigger selber Datensätze einfügen, ändern und löschen können, kann ein Trigger durch seine Ausführung weitere Trigger auslösen. So kann eine ganze Kette von Verarbeitungen angestoßen werden.

Zur Erstellung von Triggern stellen die verschiedenen RDBMS stehen eingebaute prozedurale Programmiersprachen wie PL/pgSQL von PostgreSQL, PL/SQL (von Oracle) oder SQL PL (von IBM DB2) zur Verfügung. Bei einigen RDBMS können innerhalb der Trigger-Verarbeitung auch Stored Procedures aufgerufen werden. Dadurch ist der Aufruf eines in einer anderen Programmiersprache (C, COBOL, Java) geschriebenen Programms möglich. Bei den hier genannten RDBMS sind Trigger sowohl auf Tabellen, als auch auf Sichten möglich.

Beispiele für Trigger

Trigger PL/SQL Syntax

   CREATE [OR REPLACE] TRIGGER <trigger_name>
    {BEFORE|AFTER} {INSERT|DELETE|UPDATE}
     ON <table_name>
      [REFERENCING [NEW AS <new_row_name>] [OLD AS <old_row_name>]]
        [FOR EACH ROW [WHEN (<trigger_condition>)]]
        <trigger_body>

PL/SQL Code Beispiel

 CREATE TRIGGER mitarbeiter_trig_gehalt_biu
 BEFORE INSERT OR UPDATE OF gehalt ON mitarbeiter
 FOR EACH ROW
  -- Triggername mitarbeiter_trig_gehalt_biu
  -- (_biu steht für B-efore I-nsert U-pdate )
  -- Tabelle: MITARBEITER
  -- Trigger soll nur auslösen,
  -- wenn Gehalt kleiner 5000 ist oder neues Gehalt kleiner altes Gehalt
  -- in der folgenden WHEN-Klausel erfolgt der Zugriff auf :old und :new OHNE das Zeichen :
 WHEN (NEW.gehalt <= 5000 OR NEW.gehalt < old.gehalt)
 DECLARE
   v_mitarbeiter_name VARCHAR2(255):=NULL;
   -- Cursor holt "Name, Vorname" von Mitarbeitertabelle
   -- Explizite Definition des Cursors hat
   -- Performance-Vorteile gegen "select into <variable>" im Trigger-Body
   CURSOR c_name IS SELECT name||', '||vorname
                    FROM mitarbeiter
                    WHERE mitarbeiternummer = :NEW.MITARBEITERNR;
 BEGIN
   -- Mitarbeiter-Name ermitteln und in Variable v_mitarbeiter_name speichern
   OPEN c_name;
   FETCH c_name INTO v_mitarbeiter_name;
   CLOSE c_name;
   -- Bei Gehalt kleiner 5000 Exception auslösen
      --> Fehler wird in der Regel bis zur Anwendung hochgereicht
   -- Exception-Nr -20000 - -29999 können selbst definiert werden
   IF :NEW.GEHALT <= 5000 THEN
     RAISE_APPLICATION_ERROR(
         -20901,
         'Managergehalt für Mitarbeiter '||v_mitarbeiter_name||' zu klein!'
     );
   END IF;
   IF :NEW.GEHALT < :OLD.GEHALT THEN
     RAISE_APPLICATION_ERROR(
         -20902,
         'Gehaltskürzung für Mitarbeiter '||v_mitarbeiter_name||' nicht erlaubt!'
     );
   END IF;
 END;
 /

Literatur

  • H. Faeskorn-Woyke, B. Bertelsmeier, P. Riemer, E. Bauer: Datenbanksysteme, Theorie und Praxis mit SQL2003, Oracle und MySQL. Pearson-Studium, München/Boston 2007, ISBN 978-3-8273-7266-6.

Weblinks

Wiktionary Wiktionary: Datenbanktrigger – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Gültigkeitszeit — Unter temporaler Datenhaltung (auch Historisierung genannt) versteht man in der Informationstechnik das Festhalten der zeitlichen Entwicklung der Daten bei Speicherung in einer Datenbank. Häufig ist es ausreichend, in einer Datenbank nur den… …   Deutsch Wikipedia

  • Temporale Daten — Unter temporaler Datenhaltung (auch Historisierung genannt) versteht man in der Informationstechnik das Festhalten der zeitlichen Entwicklung der Daten bei Speicherung in einer Datenbank. Häufig ist es ausreichend, in einer Datenbank nur den… …   Deutsch Wikipedia

  • Transaktionszeit — Unter temporaler Datenhaltung (auch Historisierung genannt) versteht man in der Informationstechnik das Festhalten der zeitlichen Entwicklung der Daten bei Speicherung in einer Datenbank. Häufig ist es ausreichend, in einer Datenbank nur den… …   Deutsch Wikipedia

  • DBMS — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • DBVS — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Data base management system — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Database management system — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Datenbankanwendung — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Datenbanken — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Datenbankmanagementsystem — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”