Beispiele für die Erstellung und Verwendung von MySQL-Triggern

Beispiele für die Erstellung und Verwendung von MySQL-Triggern

In diesem Artikel wird beschrieben, wie Sie MySQL-Trigger erstellen und verwenden. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Was ist ein Auslöser

  • Trigger werden verwendet, um bestimmte Aktionen nach/vor bestimmten Aktionen „automatisch“ auszuführen. (Wenn beispielsweise neue Schülerinformationen eingegeben werden, sollte die Schüleranzahl in der Klassentabelle geändert werden.)
  • Nachdem der Auslöser „Einfügen, Löschen, Aktualisieren“ festgelegt wurde, wird durch die Ausführung der Operation „Einfügen, Löschen, Aktualisieren“ automatisch der festgelegte Inhalt ausgelöst.
  • Eine Tabelle kann maximal 6 Trigger haben (3*2, drei Operationen*zwei Mal (vorher|nachher)).

Erstellen eines Triggers

Grammatik:

Trigger erstellen, Triggername vor|nach Ereignis für Tabellenname für jede Zeilentriggeranweisung;

  • Der empfohlene Triggername ist „trigger_xxx“, da er leicht zu unterscheiden ist. Triggernamen dürfen nicht wiederholt werden .
  • before|after stellt den Ausführungszeitpunkt der Trigger-Anweisung dar. Wenn es before ist, wird die Trigger-Anweisung vor dem Einfüge-, Lösch- oder Aktualisierungsvorgang ausgeführt; after bedeutet danach.
  • Ein Ereignis ist eine der Einfüge-, Lösch- und Aktualisierungsoperationen.
  • Für jede Zeile gibt es einen Auslöser, der die entsprechende Operation für jeden Datensatz ausführt.
  • Eine Triggeranweisung ist eine Anweisung, die ausgeführt wird, wenn ein Trigger ausgelöst wird.

Erklärung der Schlüsselwörter in der MySQL-Erstellungssyntax:

Felder Bedeutung Mögliche Werte
DEFINER= Optionaler Parameter, gibt den Ersteller an, der Standard ist der aktuell angemeldete Benutzer (CURRENT_USER);
Der Trigger wird von dem durch diesen Parameter angegebenen Benutzer ausgeführt, daher müssen die Berechtigungen berücksichtigt werden.
DEFINER='root@%'
DEFINER=AKTUELLER_BENUTZER
Auslösername Der Triggername sollte vorzugsweise aus dem Tabellennamen + Trigger-Ereignisschlüsselwort + Trigger-Zeitschlüsselwort bestehen;
Auslösezeit Der Auslösezeitpunkt, vor oder nach einem bestimmten Ereignis; VORHER, NACHHER
Auslöseereignis Auslöseereignisse, wie beispielsweise das Auslösen beim Einfügen oder Löschen;
INSERT : Auslöser für Einfügevorgänge, ausgelöst durch INSERT, LOAD DATA, REPLACE;
UPDATE : Auslöser für den Aktualisierungsvorgang, der ausgelöst wird, wenn ein UPDATE-Vorgang auftritt;
DELETE : Auslöser für Löschvorgänge, ausgelöst durch die Vorgänge DELETE und REPLACE;
EINFÜGEN, AKTUALISIEREN, LÖSCHEN
Tabellenname Der Tabellenname der Trigger-Operationszeit;
Auslösereihenfolge Optionaler Parameter, wenn mehrere Trigger mit gleichem Triggerereignis und Triggerzeitpunkt definiert sind (
Beispiel: VOR DEM UPDATE) entspricht die standardmäßige Auslösereihenfolge der Reihenfolge, in der die Auslöser erstellt werden. Mit diesem Parameter können Sie die Auslösereihenfolge ändern. Dieser Parameter wird seit MySQL 5.7.2 unterstützt.
FOLGT : Der aktuell erstellte Trigger wird nach den vorhandenen Triggern aktiviert;
PRECEDES : Der aktuell erstellte Trigger wird vor den vorhandenen Triggern aktiviert;
FOLGT, GEHT VORAUS
Auslöser_Body Der Inhalt der SQL-Anweisung, die die Ausführung auslöst, beginnt normalerweise mit begin und endet mit end Anfang .. Ende

Anwendungsbeispiel für MySQL-Trigger:

1. MySQL-Trigger Insert löst die Aktualisierung derselben Tabelle aus:

Unten haben wir eine Tabelle „ tmp1 “. Die Tabelle tmp1 hat zwei ganzzahlige Felder: n1, n2. Wir müssen Trigger verwenden, um den Wert des Felds n2 beim Einfügen von Datensätzen in tmp automatisch auf das Fünffache des Werts des Felds n1 zu setzen.
Erstellen Sie eine Testtabelle und lösen Sie Folgendes aus:

- Erstellen Sie eine Testtabelle, löschen Sie die Tabelle, falls tmp1 vorhanden ist.
 
Erstellen Sie Tabelle tmp1 (n1 int, n2 int);
 
-- Trigger erstellen DELIMITER $
 
Trigger löschen, falls vorhanden tmp1_insert$
 
Trigger tmp1_insert erstellen
 
vor dem Einfügen auf tmp1
 
für jede Zeile
 
beginnen
 
  setze neu.n2 = neu.n1*5;
 
Ende$
 
TRENNUNGSZEICHEN ;

Testen Sie den Effekt der Aktualisierung des Triggers:

mysql> tmp1(n1)-Werte einfügen(18);
 
Abfrage OK, 1 Zeile betroffen (0,01 Sek.)
 
mysql> tmp1(n1)-Werte einfügen(99);
 
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)
 
mysql> wähle * aus tmp1;
 
+------+------+
 
|
 
+------+------+
 
| 18 | 90 |
 
| 99 | 495 |
 
+------+------+
 
2 Zeilen im Satz (0,00 Sek.)

2. MySQL-Trigger Update löst die Aktualisierung einer anderen Tabelle aus:

Unten sind zwei Tabellen, tmp1 und tmp2, die beide denselben Feldnamen haben. Wenn ein Trigger zum Aktualisieren des Namens einer Tabelle verwendet wird, wird auch der Name einer anderen Tabelle aktualisiert.
Erstellen Sie eine Testtabelle und lösen Sie Folgendes aus:

- Erstellen Sie eine Testtabelle und fügen Sie die Testdaten-Drop-Tabelle ein, falls vorhanden: tmp1;
 
Tabelle löschen, falls tmp2 vorhanden ist;
 
Erstellen Sie Tabelle tmp1 (ID int, Name varchar(128)) Standard-Zeichensatz='utf8';
 
Erstellen Sie Tabelle tmp2 (fid int, Name varchar(128)) Standard-Zeichensatz='utf8';
 
in tmp1-Werte einfügen (1, „E-Mail“);
 
in tmp2-Werte einfügen (1, „E-Mail“);
 
-- Trigger erstellen DELIMITER $
 
Trigger löschen, falls vorhanden: tmp1_update$
 
Trigger tmp1_update erstellen
 
nach dem Update auf tmp1
 
für jede Zeile
 
beginnen
 
  Aktualisiere tmp2, setze Name=new.name, wobei fid=new.id;
 
Ende$
 
TRENNUNGSZEICHEN ;

Testen Sie den Effekt der Aktualisierung des Triggers:

mysql> wähle * aus tmp1;
 
+------+---------+
 
| Ich würde | Name |
 
+------+---------+
 
| 1 | Liebe Grüße, E-Stamm |
 
+------+---------+
 
1 Zeile im Satz (0,00 Sek.)
 
mysql> wähle * aus tmp2;
 
+------+---------+
 
| Name |
 
+------+---------+
 
| 1 | Liebe Grüße, E-Stamm |
 
+------+---------+
 
1 Zeile im Satz (0,00 Sek.)
 
mysql> update tmp1 set name='aiezu.com' wobei id=1;
 
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)
 
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0
 
mysql> wähle * aus tmp1;
 
+------+----------+
 
| Ich würde | Name |
 
+------+----------+
 
| 1 | aiezu.com |
 
+------+----------+
 
1 Zeile im Satz (0,00 Sek.)
 
mysql> wähle * aus tmp2;
 
+------+----------+
 
| Name |
 
+------+----------+
 
| 1 | aiezu.com |
 
+------+----------+
 
1 Zeile im Satz (0,00 Sek.)

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:
  • Detaillierte Erklärung des MySQL-Triggerbeispiels
  • Einführung und Verwendung von Triggern und Cursorn in MySQL
  • Verwendung und Verständnis von MySQL-Triggern
  • So verwenden Sie Cursor-Trigger in MySQL
  • Der Einsatz von MySQL Triggern und worauf zu achten ist
  • MySQL-Trigger-Verwendungsszenarien und Methodenbeispiele
  • Detaillierte Erklärung der MySQL-Datenbank-Trigger
  • Eine kurze Diskussion über MySql-Ansichten, Trigger und gespeicherte Prozeduren
  • Detaillierte Erklärung der grundlegenden Verwendung von MySQL-Triggern [Erstellen, Anzeigen, Löschen usw.]
  • Verwendung von MySQL-Triggern

<<:  Vue-Methode zum Überprüfen, ob der Benutzername verfügbar ist

>>:  Vue simuliert die Warenkorb-Abrechnungsfunktion

Artikel empfehlen

So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

Nginx-Optimierung --- Versionsnummer und Cache-Ze...

Interpretation des Moduls zum Lastenausgleich mit nginx

Inhaltsverzeichnis Zwei Module zur Verwendung von...

CentOS 7-Konfiguration Tomcat9+MySQL-Lösung

Tomcat konfigurieren Installieren Sie zuerst Tomc...

Kopieren Sie den Inhalt einer Datei an das Ende einer anderen Datei in Linux

Problembeschreibung: Der Inhalt der Datei 11 laut...

Über visuelles Design und Interaktionsdesign

<br />Im gesamten Produktdesignprozess liege...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Eine vollständige Liste gängiger Linux-Systembefehle für Anfänger

Das Erlernen von Linux-Befehlen stellt für die me...