MySQL-Trigger: Erstellen und Verwenden von Triggern

MySQL-Trigger: Erstellen und Verwenden von Triggern

Dieser Artikel beschreibt anhand von Beispielen die Erstellung und Verwendung von MySQL-Triggern. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Mit der Anweisung CREATE TRIGGER können wir einen neuen Trigger erstellen. Schauen wir uns die spezifische Syntax an:

TRIGGER ERSTELLEN Triggername Triggerzeit Triggerereignis
 ON Tabellenname
 FÜR JEDE REIHE
 BEGINNEN
 ...
 ENDE;

Schauen wir uns dann die spezifische Bedeutung des obigen SQL genauer an:

  • Platzieren Sie den Triggernamen nach der CREATE TRIGGER-Anweisung. Triggernamen sollten der Namenskonvention [Triggerzeit]_[Tabellenname]_[Triggerereignis] folgen, zum Beispiel „before_employees_update“.
  • Der Trigger-Aktivierungszeitpunkt kann davor oder danach liegen. Sie müssen den Aktivierungszeitpunkt für den definierten Trigger angeben. Wenn Sie die Aktion vor der Änderung verarbeiten möchten, verwenden Sie das Schlüsselwort BEFORE. Wenn Sie die Aktion nach der Änderung verarbeiten müssen, verwenden Sie das Schlüsselwort AFTER.
  • Das auslösende Ereignis kann INSERT, UPDATE oder DELETE sein. Dieses Ereignis bewirkt, dass der Trigger aufgerufen wird. Ein Trigger kann nur durch ein Ereignis aufgerufen werden. Um einen Trigger zu definieren, der von mehreren Ereignissen aufgerufen wird, müssen Sie mehrere Trigger definieren, einen für jedes Ereignis.
  • Ein Trigger muss einer bestimmten Tabelle zugeordnet sein. Da ohne Tabelle kein Trigger vorhanden ist, muss der Tabellenname nach dem Schlüsselwort ON angegeben werden.
  • Platzieren Sie SQL-Anweisungen zwischen BEGIN- und END-Blöcken. Hier wird die Triggerlogik definiert.

Nachdem wir nun ein allgemeines Verständnis haben, versuchen wir, einen Trigger zu erstellen, um Änderungen an Zeilendaten in der Mitarbeitertabelle aufzuzeichnen. Schauen wir uns zunächst die Struktur dieser Tabelle an:

mysql> DESC-Mitarbeiter;
+----------------+--------------+------+-----+---------+---------+----------+
| Feld | Typ | Null | Schlüssel | Standard | Extra |
+----------------+--------------+------+-----+---------+---------+----------+
| Mitarbeiternummer | int(11) | NEIN | PRI | NULL | |
| Nachname | varchar(50) | NEIN | | NULL | |
| Vorname | varchar(50) | NEIN | | NULL | |
| Erweiterung | varchar(10) | NEIN | | NULL | |
| E-Mail | varchar(100) | NEIN | | NULL | |
| officeCode | varchar(10) | NEIN | MUL | NULL | |
| Berichte an | int(11) | JA | MUL | NULL | |
| Jobtitel | varchar(50) | NEIN | | NULL | |
+----------------+--------------+------+-----+---------+---------+----------+
8 Reihen im Set

Erstellen wir eine neue Tabelle mit dem Namen „Mitarbeiterprüfung“, um Änderungen an den Daten in der Mitarbeitertabelle zu speichern:

Tabelle erstellen Mitarbeiter_Audit (
  ID INT AUTO_INCREMENT PRIMARY KEY,
  Mitarbeiternummer INT NICHT NULL,
  Nachname VARCHAR(50) NOT NULL,
  geändert am DATETIME DEFAULT NULL,
  Aktion VARCHAR(50) DEFAULT NULL
);

Erstellen Sie als Nächstes einen BEFORE UPDATE-Trigger, der aufgerufen wird, bevor eine Zeile in der Mitarbeitertabelle aktualisiert wird:

TRENNUNGSZEICHEN $$
Trigger erstellen vor_Mitarbeiteraktualisierung 
  VOR DEM UPDATE ZU MITARBEITERN
  FÜR JEDE REIHE 
BEGINNEN
  INSERT INTO Mitarbeiteraudit
  SET-Aktion = "Aktualisieren",
   Mitarbeiternummer = ALT.Mitarbeiternummer,
    Nachname = ALT.Nachname,
    geändert bei = JETZT(); 
ENDE$$
TRENNUNGSZEICHEN ;

Im Hauptteil des obigen Triggers haben wir das Schlüsselwort OLD verwendet, um auf die Spalten „employeeNumber“ und „lastname“ der vom Trigger betroffenen Zeilen zuzugreifen. Wir sollten beachten, dass im für das Einfügen definierten Trigger nur das Schlüsselwort NEW verwendet werden kann. Das Schlüsselwort OLD kann nicht verwendet werden. In einem für DELETE definierten Trigger gibt es jedoch keine neuen Zeilen, daher können Sie nur das Schlüsselwort OLD verwenden. In einem Aktualisierungstrigger bezieht sich ALT auf die Zeile vor der Aktualisierung und NEU auf die Zeile nach der Aktualisierung.

Anschließend können wir die Anweisung SHOW TRIGGERS verwenden, um die Trigger in der Datenbank anzuzeigen:

mysql> TRIGGERS ANZEIGEN;
+------------------------+--------+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+----------------------+--------------------+
| Auslöser | Ereignis | Tabelle | Anweisung | Zeitpunkt | Erstellt | SQL-Modus | Definierer | Zeichensatzclient | Sortierverbindung | Datenbanksortierung |
+------------------------+--------+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+----------------------+--------------------+
| vor_Mitarbeiteraktualisierung | UPDATE | Mitarbeiter | BEGIN
  INSERT INTO Mitarbeiteraudit
  SET-Aktion = "Aktualisieren",
   Mitarbeiternummer = ALT.Mitarbeiternummer,
    Nachname = ALT.Nachname,
    geändert bei = JETZT();
ENDE | VORHER | 02.08.2017 22:06:36.40 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | root@localhost | utf8 | utf8_general_ci | utf8_general_ci |
+------------------------+--------+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+----------------------+--------------------+
1 Reihe im Set

Wenn wir fertig sind, können wir die Mitarbeitertabelle aktualisieren, um zu prüfen, ob der Trigger aufgerufen wurde:

UPDATE Mitarbeiter 
SATZ 
  Nachname = "Maxsu"
WO
  Mitarbeiternummer = 1056;

Mit der folgenden Abfrage können Sie die Tabelle „employees_audit“ abfragen und prüfen, ob der Trigger durch die UPDATE-Anweisung aufgerufen wird:

mysql> AUSWÄHLEN * VON Mitarbeiterprüfung;
+----+----------------+----------+---------------------+--------+
| ID | Mitarbeiternummer | Nachname | geändert am | Aktion |
+----+----------------+----------+---------------------+--------+
| 1 | 1056 | Hügel | 02.08.2017 22:15:51 | aktualisieren |
+----+----------------+----------+---------------------+--------+
1 Reihe im Set

Wie in der obigen Ausgabe gezeigt, wird der Trigger tatsächlich aufgerufen und eine neue Zeile in die Tabelle „employees_audit“ eingefügt.

Okay, das ist alles zu diesem Eintrag.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • MySQL-Triggersyntax und Anwendungsbeispiele
  • Detaillierte Erläuterung der gespeicherten Prozedur „MySql View Trigger“
  • MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen
  • Implementierungscode für den MySQL-Protokolltrigger
  • Beispiel für die MySQL-Triggeroperation „Hinzufügen“, „Löschen“, „Ändern“ und „Abfragen“
  • MySQL-Trigger: Beispielanalyse zum Erstellen mehrerer Trigger
  • Einführung in MySQL-Trigger, Erstellen von Triggern und Analyse von Nutzungsbeschränkungen
  • Einfaches Beispiel für die Definition und Verwendung von MySQL-Triggern
  • Detaillierte Erklärung des Konzepts, Prinzips und der Verwendung von MySQL-Triggern
  • Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]
  • Detaillierte Erklärung der MySQL-Datenbank-Trigger

<<:  JavaScript Canvas realisiert dynamische Punkt- und Linieneffekte

>>:  In wenigen Schritten zum einfachen Aufbau eines Windows-SSH-Servers

Artikel empfehlen

js-Methode zur Realisierung der Warenkorbberechnung

In diesem Artikelbeispiel wird der spezifische Co...

So installieren Sie OpenSuse auf Virtualbox

Die virtuelle Maschine wird auf dem Hostcomputer ...

So installieren Sie allgemeine Komponenten (MySQL, Redis) in Docker

Docker installiert MySQL Docker-Suche MySQL. Such...

Umfassende Analyse von Prototypen, Prototypobjekten und Prototypketten in js

Inhaltsverzeichnis Prototypen verstehen Prototypo...

Detaillierte Erläuterung der drei Methoden zum Abfangen von JS-Zeichenfolgen

JS bietet drei Methoden zum Abfangen von Zeichenf...

Beispiel für die Implementierung von Unterstreichungseffekten mit CSS und JS

In diesem Artikel werden hauptsächlich zwei Arten...

Chinesische Lösung und Beispielcode für die MySQL-Volltextsuche

MySQL-Volltextsuche, chinesische Lösung Kürzlich ...

Implementierung der Formatierung von Partitionen und der Einbindung in Centos7

Unter Linux treten häufig Situationen auf, in den...

VMware Workstation Pro installiert das Win10-Betriebssystem in Reinform

Dieser Artikel beschreibt die Schritte zur Instal...

CentOS 6.5 Installations-Tutorial zu MySQL 5.7

1. Neue Funktionen MySQL 5.7 ist ein spannender M...

Vue erzielt einen nahtlosen Karusselleffekt (Laufschrift)

In diesem Artikelbeispiel wird der spezifische Co...