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
Ich habe bereits einige grundlegende CSS-Selektor...
Der vollständige Name von Blog sollte Weblog sein,...
Vorne geschrieben Wenn wir in unserem täglichen L...
1 Rufen Sie die Alibaba Cloud-Konsole auf, suchen...
Das leistungsstarke Tool cgroup im Kernel kann ni...
Inhaltsverzeichnis 1. Einführung in MHA 1. Was is...
1. Filter Beispiel: <!DOCTYPE html> <htm...
In diesem Artikel werden die detaillierten Schrit...
MySQL ist ein Open-Source-Verwaltungssystem für k...
Ich bin auf ein Problem gestoßen. Wenn beim Teste...
Direkt zur Konfigurationsdatei Server { listen 80...
Da wir eine Website erstellen wollten, enthielt d...
Inhaltsverzeichnis 1. Array-Induktion 1. Teilen S...
Docker Compose Docker Compose ist ein Tool zum De...
Öffentliche kostenlose STUN-Server Wenn das SIP-T...