Detaillierte Erklärung der grundlegenden Verwendung von MySQL-Triggern [Erstellen, Anzeigen, Löschen usw.]

Detaillierte Erklärung der grundlegenden Verwendung von MySQL-Triggern [Erstellen, Anzeigen, Löschen usw.]

Dieser Artikel veranschaulicht anhand von Beispielen die grundlegende Verwendung von MySQL-Triggern. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

1. MySQL-Trigger erstellen:

1. Syntax zum Erstellen von MySQL-Triggern:

ERSTELLEN [DEFINER = { 'Benutzer' | AKTUELLER_BENUTZER }] 
TRIGGER Auslösername
Auslösezeit Auslöseereignis
ON Tabellenname
FÜR JEDE REIHE
[Auslösereihenfolge]
Auslöser_Body

2. 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

3. ALT, NEU im Inhalt der Trigger-Ausführungsanweisung (trigger_body):

In trigger_body können wir NEW verwenden, um anzugeben, dass neue Zeilen eingefügt werden sollen (entspricht INSERTED von MS SQL), und OLD, um anzugeben, dass alte Zeilen gelöscht werden sollen (entspricht DELETED von MS SQL). Holen Sie sich den Feldinhalt von ALT und NEU, um ihn in Triggervorgängen einfach verwenden zu können. Im Folgenden wird die Beziehung zwischen der Unterstützung von ALT und NEU durch das entsprechende Ereignis beschrieben:

Ereignis ALT NEU
EINFÜGEN ×
LÖSCHEN ×
AKTUALISIEREN

Da UPDATE gleichbedeutend mit dem Löschen der alten Zeile (OLD) und dem Einfügen der neuen Zeile (NEW) ist, unterstützt UPDATE sowohl OLD als auch NEW.

4. MySQL-Trennzeichen (DELIMITER):

MySQL verwendet standardmäßig ";" als Trennzeichen und die SQL-Anweisung wird übermittelt, wenn sie auf ";" stößt. Unser Trigger kann mehrere ";"-Zeichen enthalten. Um zu verhindern, dass die Trigger-Erstellungsanweisung vorzeitig übermittelt wird, müssen wir das MySQL-Trennzeichen vorübergehend ändern und es nach der Erstellung wieder zurückändern. Mit DELIMITER können Sie das Trennzeichen wie folgt ändern:

TRENNUNGSZEICHEN $
... --Trigger-Erstellungsanweisung;
$ --Senden Sie die Erstellungsanweisung;
TRENNUNGSZEICHEN ;

2. Erweiterte MySQL-Trigger-Erstellung:

1. Verwenden von Variablen in MySQL-Triggern:

In MySQL-Triggern werden Variablen mit '@' vorangestellt und können direkt ohne Definition verwendet werden:

--Variablen-Direktzuweisungssatz @num=999;
 
-- Verwenden Sie die Daten aus der Select-Anweisung, um einen Wert zuzuweisen. Klammern sind erforderlich:
setze @name =(Name aus Tabelle auswählen);

2. Verwenden Sie die if-Anweisung im MySQL-Trigger, um eine bedingte Beurteilung vorzunehmen:

-- Einfache if-Anweisung:
setze Geschlecht = if (new.sex=1, 'männlich', 'weiblich');
 
--Mehrere bedingte if-Anweisungen:
wenn old.type=1 dann
  Tabelle aktualisieren ...;
sonstwenn alt.Typ=2 dann
  Tabelle aktualisieren ...;
Ende wenn;

3. MySQL-Ansichtstrigger:

Sie können die Auslöser mit „ show triggers; “ anzeigen. Da die von MySQL erstellten Trigger in der triggers Tabelle in der Bibliothek information_schema gespeichert werden, können Sie die Trigger auch anzeigen, indem Sie diese Tabelle abfragen:

- Zeigen Sie die Auslöser über die Tabelle information_schema.triggers an:
Wählen Sie * aus information_schema.triggers;
 
--mysql zeigt Trigger zum Anzeigen der aktuellen Datenbank an;
 
-- MySQL zeigt Trigger von aiezu für die angegebene Datenbank „aiezu“ an;

4. MySQL-Löschtrigger:

1. Sie können den Trigger mit Drop Trigger löschen:

Auslöser Auslösername löschen;


2. Prüfen Sie vor dem Löschen, ob der Trigger vorhanden ist:

Trigger löschen, falls vorhanden, Triggername


5. Beispiele für die Verwendung von MSSQL-Triggern:

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 n2 beim Einfügen von Datensätzen in tmp automatisch auf das Fünffache des Werts 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 name haben. Wenn ein Trigger zum Aktualisieren name einer Tabelle verwendet wird, wird auch 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
  • Beispiele für die Erstellung und Verwendung von MySQL-Triggern
  • Verwendung von MySQL-Triggern

<<:  Aufbauprinzip des Nexus-Privatservers und Tutorial-Analyse

>>:  Centos7 implementiert Beispielcode zum Wiederherstellen von Daten basierend auf MySQL-Protokollen

Artikel empfehlen

Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt

Heutzutage gehört die Unterstützung von HTTPS für...

Detaillierte Erklärung der Verwendung des chmod-Befehls in Linux

chmod-Befehlssyntax Dies ist die korrekte Syntax ...

So verwenden Sie Axios, um Netzwerkanforderungen in React Native zu stellen

In der Front-End-Entwicklung gibt es viele Möglic...

Vue.js implementiert Kalenderfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Ausführliche Erläuterung der Standortpriorität von Nginx

Standortausdruckstyp ~ bedeutet, dass ein regulär...

So importieren Sie Excel-Dateien in eine MySQL-Datenbank

In diesem Artikel erfahren Sie, wie Sie Excel-Dat...

Detaillierte Erklärung der Beziehung zwischen React und Redux

Inhaltsverzeichnis 1. Die Beziehung zwischen Redu...

Detaillierte Erklärung zur Verwendung des Arguments-Objekts in JavaScript

Inhaltsverzeichnis Vorwort Grundlegende Konzepte ...

Eine kurze Erläuterung des zugrunde liegenden Prinzips von MySQL Join

Inhaltsverzeichnis Join-Algorithmus Der Unterschi...

So verwenden Sie rsync unter Linux

Inhaltsverzeichnis 1. Einleitung 2. Installation ...