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 TriggerIch 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:
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 verwendenTesten 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:
|
<<: Beispiel für reines CSS zum Ändern des Bildlaufleistenstils des Browsers
>>: Detaillierte Analyse der untergeordneten und übergeordneten Vue-Komponenten
Dieser Artikel veranschaulicht anhand eines Beisp...
Vorwort: Bei der Projektentwicklung werden in ein...
Wenn wir eine neue CSS-Funktion verwenden möchten...
Inhaltsverzeichnis Wenn Sie mehrere Variablen gle...
1. Implementieren Sie ein einfaches Dreieck Mithi...
Wenn Sie Inhalte vor Benutzern von Telefonen, Tabl...
Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...
Inhaltsverzeichnis 1. MySQL Master-Slave-Replikat...
Inhaltsverzeichnis 1. Grundlegende Grammatik 2. F...
Als ich MySQL konfiguriert habe, habe ich die Sta...
1. Tabellenstruktur 2. Tabellendaten 3. Das Abfra...
Im Allgemeinen bietet MySQL standardmäßig eine Vi...
CSS-Operationen CSS $("").css(name|pro|...
Die Centos8-Distribution wird über die BaseOS- un...
Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...