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:
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:
|
<<: JavaScript Canvas realisiert dynamische Punkt- und Linieneffekte
>>: In wenigen Schritten zum einfachen Aufbau eines Windows-SSH-Servers
In diesem Artikelbeispiel wird der spezifische Co...
Die virtuelle Maschine wird auf dem Hostcomputer ...
Docker installiert MySQL Docker-Suche MySQL. Such...
Inhaltsverzeichnis Prototypen verstehen Prototypo...
JS bietet drei Methoden zum Abfangen von Zeichenf...
In diesem Artikel werden hauptsächlich zwei Arten...
1. Einreihiger Überlauf 1. Wenn eine einzelne Zei...
Bei der Erstellung von Webseiten werden Eingabe un...
Beachten! ! ! Diese Situation kann bei der Instal...
MySQL-Volltextsuche, chinesische Lösung Kürzlich ...
Unter Linux treten häufig Situationen auf, in den...
Vorwort Aus Kostengründen kaufen die meisten Webm...
Dieser Artikel beschreibt die Schritte zur Instal...
1. Neue Funktionen MySQL 5.7 ist ein spannender M...
In diesem Artikelbeispiel wird der spezifische Co...