Verwendung und Verständnis von MySQL-Triggern

Verwendung und Verständnis von MySQL-Triggern

1. Was ist ein Auslöser?

Ein spezieller Typ von Datenbankprogramm, das bestimmte Datenoperationen (Einfügen/Aktualisieren/Löschen) überwachen und verwandte Operationen (Einfügen/Aktualisieren/Löschen) auslösen kann, um die Integrität der Daten zu schützen.

Mein persönliches Verständnis ist, dass es dem Beobachtermuster von Java ein wenig ähnelt. Wenn sich ein Objekt ändert, reagiert auch der Beobachter.

Mysql scheint Trigger ab 5.0 zu unterstützen.

2. Erstellen Sie einen Trigger

Ich werde zwei Möglichkeiten zum Erstellen von Triggern vorstellen: Erstellen mit Anweisungen und Erstellen mit Navicat.

Die Syntax zum Erstellen eines Triggers lautet wie folgt:

TRIGGER ERSTELLEN trigger_name trigger_time trigger_event ON tb_name FÜR JEDE ZEILE trigger_stmt
trigger_name: der Name des Triggers trigger_time: die Triggerzeit, die VOR oder NACH liegen kann
trigger_event: Triggerereignis, INSERT, DELETE oder UPDATE
tb_name: gibt die Tabelle an, auf der der Trigger erstellt wird. trigger_stmt: der Hauptteil des Triggers, der eine SQL-Anweisung oder mehrere Anweisungen sein kann, die von BEGIN und END umschlossen sind. Wir können also sagen, dass MySQL die folgenden sechs Triggertypen erstellt:
VOR DEM EINFÜGEN, VOR DEM LÖSCHEN, VOR DEM AKTUALISIEREN
NACH DEM EINFÜGEN, NACH DEM LÖSCHEN, NACH DEM AKTUALISIEREN

Der Parameter Triggername bezieht sich auf den Namen des zu erstellenden Triggers.

Die Parameter BEFORE und AFTER geben an, wann der Trigger ausgeführt wird, vor oder nach dem Ereignis.

FOR EACH ROW bedeutet, dass jeder Vorgang an einem Datensatz, der das Triggerereignis erfüllt, den Trigger auslöst.

Erstellen Sie mehrere Trigger, die Anweisungen ausführen:

CREATE TRIGGER Triggername VOR | NACH Triggerereignis ON Tabellenname FÜR JEDE ZEILE
BEGINNEN
 Anweisungsliste ausführen END

Verwendung von NEU und ALT:

Trigger-Typ Einsatz von Neuem und Altem
einfügen Neu steht für neu hinzugefügte Daten
aktualisieren Neu stellt die aktualisierten Daten dar, und alt stellt die Daten vor der Aktualisierung dar.
löschen alt stellt die zu löschenden Daten dar

Ein Feld kann „new/lod“ genannt werden.

Als nächstes erstellen wir zwei Tabellen zum Testen:

stu-Tabelle: Haupttabelle (beobachtet)

Tabelle löschen, wenn `stu` vorhanden ist;
TABELLE ERSTELLEN `stu` (
`id` int(11) NICHT NULL AUTO_INCREMENT KOMMENTAR 'id',
`name` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_general_ci NULL STANDARD NULL KOMMENTAR 'Name',
`Alter` int(11) NULL DEFAULT NULL COMMENT 'Alter',
`sort` int(11) NULL DEFAULT NULL COMMENT 'Sortierfeld',
PRIMÄRSCHLÜSSEL (`id`) MIT BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamisch;

stu_log-Tabelle: Trigger-Assoziationstabelle (Beobachter)

Tabelle löschen, wenn `stu_log` vorhanden ist;
Tabelle „stu_log“ erstellen (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_general_ci NULL STANDARD NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
PRIMÄRSCHLÜSSEL (`id`) MIT BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamisch;

Nehmen wir nun an, dass es ein Unternehmen gibt, bei dem beim Hinzufügen oder Löschen von Daten aus der Tabelle „stu“ synchron ein Protokoll in „stu_log“ aufgezeichnet wird, in dem Name und Uhrzeit festgehalten werden.

Wenn wir keine Trigger verwenden, müssen wir Code schreiben, um diese Anforderung umzusetzen, aber Trigger können uns dabei helfen, dies problemlos zu erreichen.

Zuerst erstellen wir einen Einfügetrigger mit der Anweisung:

TRIGGER LÖSCHEN, WENN `insert_log` EXISTIERT;
Trennzeichen;;
ERSTELLEN SIE DEN TRIGGER `add_log` NACH DEM INSERT AUF `stu` FÜR JEDE ZEILE BEGIN
INSERT INTO stu_log(Name,Erstellungszeit) VALUES(neu.`Name`,jetzt());
ENDE
;;
Trennzeichen ;

Ausführungsergebnis:

Dann verwenden wir Navicat, um einen Löschauslöser zu erstellen:

Schritt 1: Klicken Sie mit der rechten Maustaste auf die Stu-Tabelle und wählen Sie Design Table ---- Trigger

Schritt 2: Füllen Sie die Optionen wie in der Abbildung gezeigt aus und wählen Sie Vor dem Löschen auslösen

Schritt 3: Schreiben Sie die Ausführungsanweisung in das Definitionsfeld unten, wie in der Abbildung gezeigt. Denken Sie daran, auf Speichern zu klicken!

Stellungnahme:

beginnen
INSERT INTO stu_log(Name,Erstellungszeit) VALUES(alt.`Name`,jetzt());
Ende

3. Trigger verwenden

Testen Sie es: Fügen Sie ein neues Datenelement hinzu

einfügen in stu (Name, Alter) VALUES('Name',36)

Zeigen Sie die stu-Tabelle und die stu_log-Tabelle an:

Wie in der Abbildung zu sehen, hat der Trigger gewirkt!

Testen des Löschens eines Datenelements

LÖSCHEN aus stu, wo Name = ‚Li Bai‘

Zeigen Sie die stu-Tabelle und die stu_log-Tabelle an:

Wie in der Abbildung zu sehen, hat der Trigger gewirkt!

Oben finden Sie ausführliche Informationen zur Verwendung und zum Verständnis von MySQL-Triggern. Weitere Informationen zu MySQL-Triggern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der MySQL-Datenbank-Trigger
  • MySQL-Triggersyntax und Anwendungsbeispiele
  • MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen
  • Einführung in die Verwendung sowie Vor- und Nachteile von MySQL-Triggern

<<:  Beispiel für reines CSS zum Ändern des Bildlaufleistenstils des Browsers

>>:  Detaillierte Analyse der untergeordneten und übergeordneten Vue-Komponenten

Artikel empfehlen

Detaillierte Erläuterung der MySQL-Mehrtabellenabfrage

Sich gut zu ernähren und ausreichend zu schlafen,...

9 großartige JavaScript-Framework-Skripte zum Zeichnen von Diagrammen im Web

9 großartige JavaScript-Framework-Skripte zum Zei...

Lösungen für Probleme bei der Leistungsoptimierung von MySQL-Indizes

Die von MySQL erstellte Optimierung besteht im Hi...

Beste Möglichkeit, den Schlüssel im JSON-Objekt zu ersetzen

JSON (JavaScript Object Notation, JS Object Notat...

Grundlegende Kenntnisse zum MySQL UNION-Operator

MySQL UNION-Operator Dieses Tutorial stellt die S...

So installieren Sie Git unter Linux

1. Einleitung Git ist ein kostenloses, verteiltes...

Die beste Lösung zum Zurücksetzen des Root-Passworts von MySQL 8.0.23

Diese Methode wurde am 7. Februar 2021 bearbeitet...

Details zur MySQL-Datenbankarchitektur

Inhaltsverzeichnis 1. MySQL-Architektur 2. Netzwe...

Kennen Sie die Bedeutung von Sonderzeichen in URLs?

1.# # stellt eine Position auf einer Webseite dar...

Erstellen Sie ein Docker-Image mit Dockerfile

Inhaltsverzeichnis Erstellen Sie ein Docker-Image...

Detaillierte Erklärung der Rahmen- und Regelattribute der Tabelle in HTML

Die Rahmen- und Regelattribute des Tabellentags k...

Detaillierte Erklärung langsamer MySQL-Abfragen

Informationen zu MySQL-Vorgängen abfragen Status ...

Installation und Verwendung von TypeScript und grundlegende Datentypen

Der erste Schritt besteht darin, TypeScript globa...