Detaillierte Erklärung des Konzepts, Prinzips und der Verwendung von MySQL-Triggern

Detaillierte Erklärung des Konzepts, Prinzips und der Verwendung von MySQL-Triggern

Dieser Artikel erläutert anhand von Beispielen die Konzepte, Prinzipien und die Verwendung von MySQL-Triggern. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

1. Das Konzept des Auslösers

Ein Trigger ist eine Methode, die MySQL Programmierern und Datenanalysten zur Verfügung stellt, um die Datenintegrität sicherzustellen. Es handelt sich dabei um eine spezielle gespeicherte Prozedur, die sich auf Tabellenereignisse bezieht. Ihre Ausführung wird nicht von einem Programm aufgerufen oder manuell gestartet, sondern durch ein Ereignis ausgelöst. Sie wird beispielsweise aktiviert, wenn eine Operation (Einfügen, Löschen, Aktualisieren) an einer Tabelle ausgeführt wird. ——Baidu-Enzyklopädie

Das Obige ist das von Baidu bereitgestellte Trigger-Konzept. Mein Verständnis des Trigger-Konzepts ist, dass beim Ausführen einer SQL-Anweisung die Ausführung dieser SQL-Anweisung automatisch die Ausführung anderer SQL-Anweisungen auslöst. So einfach ist das.

Super einfache Beschreibung: sql1->trigger->sqlN, ein SQL löst mehrere SQL aus

2. Vier Elemente der Trigger-Erstellung

(1) Überwachungsort (Tabelle)
(2) Überwachungsereignisse (Einfügen/Aktualisieren/Löschen)
(3) Auslösezeitpunkt (nach/vor)
(4) Auslösende Ereignisse (Einfügen/Aktualisieren/Löschen)

3. Erstellen Sie einen Trigger

Nachfrage: Bei der Bestellung sollte der Bestand der entsprechenden Ware entsprechend reduziert werden, das heißt, der Lagerbestand sollte um die Anzahl der gekauften Waren verringert werden.

Bestelltabelle: ord
Warentabelle: Waren

Erstellen Sie zunächst eine Tabelle und fügen Sie einige Daten hinzu:

Tabelle erstellen Waren(
  gid int,
  Name varchar(20),
  Zahl, kleine Ganzzahl
);
Tabelle ord( erstellen
  oid int,
  gid int,
  viel kleiner
);
in Warenwerte einfügen (1, 'Katze', 40);
in Warenwerte einfügen (2, „Hund“, 63);
in Warenwerte einfügen (3, „Schwein“, 87);

Analysieren Sie dann anhand der vier Elemente der Trigger-Erstellung:

  • Wer soll überwacht werden: ord (Bestelltabelle)
  • Überwachungsaktion: Einfügen (Einfügevorgang)
  • Auslösezeit: nach (ausgelöst nach dem Einfügevorgang)
  • Auslöseereignis: Update (Updatevorgang auslösen)

Erstellen Sie abschließend den Trigger:

Trigger t1 erstellen 
nach
einfügen 
auf Bestellung
für jede Zeile
beginnen
 Aktualisiere den Warensatz num=num-2, wobei gid = 1 ist;
Ende$

Analyse: Der Name des Triggers ist t1, die Triggerzeit ist danach, die Überwachungsaktion ist Einfügen, Überwachung der Ord-Tabelle, für jede Zeile wird am Ende gesprochen, merken Sie es sich einfach hier, schreiben Sie das Triggerereignis zwischen Anfang und Ende, hier ist eine Aktualisierungsanweisung. Dies bedeutet, dass unabhängig von meiner Bestellung die Lagermenge des Produkts mit der Produktnummer 1 um 2 reduziert wird.

Hinweis: Führen Sie den obigen Code nicht zuerst aus, da das Standardausführungsendezeichen von MySQL ; ist. Wenn Sie die obige SQL-Anweisung ausführen, wird die Ausführung von MySQL automatisch beendet, wenn es auf ein ; stößt, und die End-Anweisung wird nicht ausgeführt. Daher müssen wir zuerst die Endkennung von MySQL in andere Zeichen ändern. Normalerweise werden $ oder $$ verwendet. Hier wird $ als Endkennung der Ausführung verwendet. Verwenden Sie die folgende Anweisung, um das Endzeichen der MySQL-Ausführung zu ändern.

Trennzeichen $ //Setzen Sie das MySQL-Ausführungsendezeichen, der Standard ist;

4. Vorhandene Trigger anzeigen und löschen

(1) Vorhandene show triggers
(2) Löschen eines vorhandenen Triggers: drop trigger triggerName

5. Referenzieren Sie Zeilenvariablen in Triggern

(1) Nach dem Ausführen der Einfügeoperation auf dem Triggerziel wird eine neue Zeile erstellt. Wenn die Variable der neuen Zeile im Triggerereignis benötigt wird, kann das Schlüsselwort „new“ verwendet werden, um dies anzuzeigen. (2) Nach dem Ausführen der Löschoperation auf dem Triggerziel wird eine alte Zeile erstellt. Wenn die Variable der alten Zeile im Triggerereignis benötigt wird, kann das Schlüsselwort „old“ verwendet werden, um dies anzuzeigen. (3) Nach dem Ausführen der Aktualisierungsoperation auf dem Triggerziel ist der ursprüngliche Datensatz die alte Zeile und der neue Datensatz die neue Zeile. Die Schlüsselwörter „new“ und „old“ können jeweils zum Bedienen verwendet werden.

Bei einer Bestellung den Lagerbestand der entsprechenden Ware reduzieren und einen Trigger erzeugen:

Trigger t2 erstellen
nach
einfügen 
auf Bestellung
für jede Zeile
beginnen
 Aktualisieren Sie den Warensatz num=num-new.much, wobei gid=new.gid ist;
Ende$

Beim Löschen einer Bestellung den Lagerbestand der entsprechenden geänderten Ware erhöhen und einen Trigger erstellen:

Trigger t3 erstellen
nach
löschen
auf Bestellung
für jede Zeile
beginnen
 Aktualisieren Sie den Warensatz num=num+old.much, wobei gid=old.gid ist;
Ende$

Wenn die Abnahmemenge einer Bestellung aktualisiert wird, wird die Lagermenge des entsprechenden Artikels geändert und ein Trigger erstellt:

Trigger t4 erstellen
vor 
aktualisieren
auf Bestellung
für jede Zeile
beginnen
 Warensatz aktualisieren, Num=Num+alt.viel-neu.viel, wobei gid = neu.gid;
Ende$

6. Der Unterschied zwischen vorher und nachher

Die After-Operation dient zum Auslösen des Ereignisses nach der Ausführung der Überwachungsaktion.
Die Operation „Before“ besteht darin, das Triggerereignis auszuführen, bevor die Überwachungsaktion ausgeführt wird. Im Allgemeinen gibt es zwischen den beiden Triggern keinen Unterschied, aber manchmal gibt es einen Unterschied, beispielsweise:

Anforderung: Wenn ein Benutzer eine Bestellung aufgibt, die den Lagerbestand übersteigt, wird die Bestellmenge der Bestellung so geändert, dass die maximale Bestellmenge dem Lagerbestand entspricht. Analyse: Stellen Sie zunächst fest, ob die Bestellmenge größer als der Lagerbestand ist, und ändern Sie dann die Bestellmenge entsprechend dem Lagerbestand.

Erstellen Sie einen Trigger:

Trigger t5 erstellen
vor
einfügen 
auf Bestellung
für jede Zeile
beginnen
 Deklarieren Sie restNum int;
 Wählen Sie Num in RestNum aus Waren, wobei gid = new.gid;
 wenn new.mh > restNum dann
   setze neu.viel = restNum;
 Ende wenn;
 Aktualisieren Sie den Warensatz num=num-new.much, wobei gid=new.gid ist;
Ende$

Hinweis: Wenn hier after verwendet wird, wird ein Fehler gemeldet. Wenn after verwendet wird, wird zuerst der Einfügevorgang ausgeführt, d. h. der Bestellvorgang wird eingefügt und dann werden Bestellmenge und Lagerbestand beurteilt, um die neue Bestellmenge zu erhalten. Der Bestellvorgang wurde jedoch ausgeführt, sodass ein Fehler gemeldet wird. Hier muss die Operation „Before“ verwendet werden.

7. Was ist der Zweck jeder Zeile?

In Oracle-Triggern werden Trigger in Zeilentrigger und Anweisungstrigger unterteilt.

Zum Beispiel:

Trigger erstellen tn
nach
aktualisieren
auf xxtable
für jede Zeile #Jede Zeile ist betroffen und das auslösende Ereignis wird ausgeführt, genannt Zeilentrigger begin
 SQLServer;
Ende$

implementieren:

Aktualisiere xxtable, setze xxx=xxx, wobei ID>100;

Angenommen, der Änderungsvorgang umfasst 100 Zeilen. Wie oft wird SQLN ausgelöst? Antwort: Es wird 100 Mal ausgelöst.

expandieren:

Wenn in Oracle nicht für jede Zeile geschrieben wird, wird das Triggerereignis nur einmal ausgeführt, unabhängig davon, wie viele Zeilen gleichzeitig von der Aktualisierungsanweisung betroffen sind.
Wenn eine Person beispielsweise eine Bestellung aufgibt und fünf Artikel kauft und diese fünfmal einfügt, können Sie einen Trigger auf Zeilenebene verwenden, um den Bestand fünfmal zu ändern. Sie können auch einen Trigger auf Anweisungsebene verwenden, um eine Versanderinnerung einzufügen.
Leider unterstützt MySQL derzeit keine Trigger auf Anweisungsebene.

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:
  • 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
  • Detaillierte Erklärung der grundlegenden Verwendung von MySQL-Triggern [Erstellen, Anzeigen, Löschen usw.]
  • Beispiel für die MySQL-Triggeroperation „Hinzufügen“, „Löschen“, „Ändern“ und „Abfragen“
  • MySQL-Trigger: Beispielanalyse zum Erstellen mehrerer Trigger
  • Einfaches Beispiel für die Definition und Verwendung von MySQL-Triggern
  • Der Einsatz von MySQL Triggern und worauf zu achten ist

<<:  Schritt-für-Schritt-Anleitung zum Erstellen einer Kalenderkomponente mit React

>>:  Installation und Verwendung der Ubuntu 18.04 Serverversion (Bild und Text)

Artikel empfehlen

jQuery implementiert die Drop-Down-Box zur Auswahl des Wohnortes

Der spezifische Code für die Verwendung von jQuer...

Kurztipps für die Linux-Befehlszeile: So finden Sie eine Datei

Wir alle haben Dateien auf unseren Computern gesp...

Installation der virtuellen Maschine Kali Linux Vmware (Abbildung und Text)

Vorbereitung: 1. Installieren Sie die VMware Work...

Es ist ganz einfach zu verstehen, was Node.js ist

Inhaltsverzeichnis Offizielle Einführung in Node....

IE8 Beta 1 hat zwei Bereiche, die Ihre Aufmerksamkeit erfordern

<br />Verwandte Artikel: Web-Kenntnisse: Lös...

Javascript zum Umschalten durch Klicken auf das Bild

Durch Klicken Bilder zu wechseln, ist im Leben ei...

Detaillierter Installationsprozess von mysql5.7.21 unter Win10

In diesem Artikel erfahren Sie mehr über die Inst...

Zwei Möglichkeiten zum Erstellen von Docker-Images

Inhaltsverzeichnis Aktualisieren Sie das Bild von...

Das Konzept und die Eigenschaften von benutzerdefinierten MySQL-Variablen

Ein MySQL Custom Value ist ein temporärer Contain...

Beispiele für häufige Nginx-Fehlkonfigurationen

Inhaltsverzeichnis Fehlender Stammspeicherort Off...

Führen Sie die Schritte zur Verwendung des Elements in vue3.0 aus

Vorwort: Verwenden Sie das Element-Framework in v...

Implementierung der Graustufenversion mit Nginx und Lua

Installieren Sie memcached yum install -y memcach...