Bryan Albrecht

MySQL Trigger

Ein Trigger ist eine Art Event, welcher ausgeführt wird, wenn etwas Bestimmtes eintrifft.

Es ist möglich festzulegen wann ein Trigger ausgeführt wird. Das heisst, dass man angeben kann ob er vor oder nach einem bestimmten Ereignis ausgeführt werden soll.

Ein Beispiel für die Anwendung eines Triggers ist das Löschen eines Datensatzes. Hier ist es sinnvoll vor dem Löschen des Datensatzes mit Hilfe eines Triggers die Daten in eine andere Tabelle zu speichern, bevor diese verloren gehen. Dabei ist es zum Beispiel möglich den Benutzer, welcher gerade etwas gelöscht hat, und den genauen Zeitpunkt des Löschens zu speichern.

Während dem Ausführen eines Triggers ist es möglich eine Funktion oder eine Prozedur aufzurufen.

Ein Trigger baut man wie folgt:

CREATE TRIGGER TRIGGERNAME ZEITPUNKT EREIGNIS ON TABELLENNAME FOR EACH ROW ANWEISUNG

Den Namen eines Triggers kann man frei wählen. Zu empfehlen ist aber ein Namen zu wählen, welchen den Trigger eindeutig kennzeichnet. Ein sinnvoller Name für einen Trigger ist zum Beispiel: trig_client_before_delete.

Ausgelöst kann ein Trigger werden, wenn ein DELETE, INSERT oder UPDATE geschieht.

Ein sehr wichtiger Punkt beim Erstellen eines Triggers ist, dass es nur ein Trigger pro Zeitpunkt geben kann. Das heisst, dass nur ein Trigger ausgeführt werden kann, bevor ein Datensatz aus der Tabelle User gelöscht wird.

Ein einfaches Beispiel eines Triggers könnte so aussehen:

  1. CREATE TRIGGER `trigger1_create`
  2. BEFORE INSERT ON `MeineTabelle`
  3. FOR EACH ROW
  4. BEGIN
  5. SET NEW.TimeStamp_Create = NOW();
  6. SET NEW.USER = CURRENT_USER();
  7. END;

Einschränkung:

Der Trigger hat nur eine markante Einschränkung. Diese Einschränkung bezieht sich auf den Zugriff in der Eigenen Tabelle. Das heisst, dass ein Trigger nicht auf die Tabelle zugreifen kann, von welcher er aufgerufen wird.