SQL & Datenbankprogrammierung
Von: Bruno Haller (abgemeldet), 9.12.2000 12:16 Uhr
Nicht dass ich plane Oracle oder sowas einzusetzen, aber mich würde mal interessieren was eigentlich ein Trigger ist. Man hört ja immer wieder, dass DB-Server wie mySQL dies nicht können etc.

MfG Bruno



  1. Antwort von Uwe Kamm 0
    Re: Was ist eigentlich ein Trigger?
    Hallo,

    ein Trigger ist eine Art von Stored Procedure, die vor oder nach DML Statements auf eine Tabelle oder sogar eine View "zünden".

    Z. B. gibt es BEFORE-UPDATE, AFTER-UPDATE, BEFORE-INSERT.... die auf Tabellen wirken und Geschäftsregeln, Initialisierungen, Prüfungen, Primary Key setzen u. ä. direkt an die Tabelle ketten.

    Dabei wird noch unterschieden ob der Trigger pro Statement oder pro modifiziertem Datensatz "zünden" soll.

    Bei Views gibt es die INSTEAD-OF Trigger die bei INSERT, UPDATE und DELETE auf eine View zum Einsatz kommen, da auf Views direkt keine DMLs durchführbar sind.

    Hier können dann beispielsweise aus einem INSERT in die View drei INSERTs auf die hinter der View liegenden Tabellen abgearbeitet werden.

    Interessant ist die Sache mit den Views bei Objectviews die man beim OOP-RDBMS-Bruch einsetzen kann. Wenn ich z. B. ein OO-Geschäftsobjekt Kunde (Objectview) speichern will und die Trigger auf der View machen meine Änderungen im RDBMS persistent.

    Ciao, Uwe
    • Antwort von Anonym (abgemeldet) 0
      Re: Was ist eigentlich ein Trigger?
      Hi Bruno!

      Ein Trigger, mal ein bißchen banaler, ist einfach ein Lauscher.

      Dieser Lauscher lauscht auf vordefinierte Ereignisse und führt dann ggf. eine Aktion durch. Welche Aktion ist eigentlich egal - vieles ist möglich.

      Ein Trigger ähnelt sehr stark einem VB/VBA-Event, wie z.B. CommandButton_Click(). So reagiert ein Trigger z.B. auf ein update eines Datensatzes und reagiert nach Überprüfung der Aktion z.B. mit einem Fehler, den man definieren kann.

      Beispiel:
      =========
      Trigger-Einstellung/Definition:
      Auf Änderung eines Datensatzes reagieren und überprüfen, welches Feld geändert werden soll. Wenn Feld NAMEN, dann Error (0815,"Nicht erlaubt") zurückliefern (Return 0815). Wenn anderes Feld, Aktion durchführen (Return 0)

      Aktion + Parameter:
      Im Datensatz mit der ID "18152-O" den Inhalt des Feldes NAMEN von "Stefan" auf "Bruno" ändern.

      Triger-Reaktion:
      0815, Nicht erlaubt

      Aktion + Parameter:
      Im Datensatz mit der ID "18152-O" den Inhalt des Feldes GESCHLECHT von "male" auf "female" ändern.

      Trigger-Reaktion:
      0 <keine>


      vg, stefan. [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]