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

Installation von CUDA10.0 und Probleme in Ubuntu

Die Entsprechung zwischen der Tensorflow-Version ...

HTML CSS3 streckt den Bildanzeigeeffekt nicht

1. Verwenden Sie das Transform-Attribut, um das B...

MySQL 5.7.18 MSI-Installations-Grafik-Tutorial

In diesem Artikel wird das MySQL 5.7.18 MSI-Insta...

Lösung für den von Mysql systemctl start mysqld gemeldeten Fehler

Fehlermeldung: Der Job für mysqld.service ist feh...

MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

Wenn Sie MySQL zum Abfragen der Datenbank verwend...

So zeigen Sie den Datenbankinstallationspfad in MySQL an

Wir können den Installationspfad von MySQL über d...

Ideen zum Erstellen von Welleneffekten mit CSS

Zuvor habe ich mehrere Möglichkeiten vorgestellt,...

Mehrere Möglichkeiten zur Implementierung der Vererbung in JavaScript

Inhaltsverzeichnis Strukturelle Vererbung (implem...

js und jquery, um einen Tab-Statusleisten-Umschalteffekt zu erzielen

Heute werden wir einen einfachen Fall durchgehen ...

Eine kurze Erläuterung des Lazy-Loading-Attributmusters in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. On-Demand-Att...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...