Detaillierte Erklärung der MySQL-Datenbank-Trigger

Detaillierte Erklärung der MySQL-Datenbank-Trigger

1 Einleitung

Dieser Artikel fasst Trigger in MySQL zusammen. Ausgehend vom Konzept der Trigger stellt dieser Artikel anhand von Beispielen vor, wie Trigger erstellt, verwendet und gelöscht werden.

2 Trigger-Einführung

MySQL-Trigger sind wie gespeicherte Prozeduren in MySQL eingebettete Programme. Ein Trigger ist ein Ereignis, das eine Aktion auslöst, einschließlich INSERT, UPDATE und DELETE. Wenn ein Trigger definiert ist, wird der Trigger aktiviert, um die entsprechende Operation auszuführen, wenn die Datenbank diese Anweisungen ausführt. Der Trigger ist ein Befehlsdatenbankobjekt, das sich auf die Tabelle bezieht. Wenn ein bestimmtes Ereignis in der Tabelle eintritt, wird das Objekt aktiviert.

Ein Trigger ist eine spezielle gespeicherte Prozedur. Der Unterschied besteht darin, dass eine gespeicherte Prozedur mit der Call-Anweisung aufgerufen werden muss, ein Trigger jedoch nicht mit der Call-Anweisung aufgerufen werden muss und auch nicht manuell gestartet werden muss. Solange ein vordefiniertes Ereignis eintritt, wird der Trigger automatisch von MySQL aufgerufen. Trigger können andere Tabellen abfragen und komplexe SQL-Anweisungen enthalten.

3 Trigger erstellen

(1) Erstellen Sie einen Trigger mit nur einer Ausführungsanweisung

Die grammatische Struktur ist wie folgt:

CREATE TRIGGER Triggername Triggerzeit Triggerereignis ON Tabellenname FÜR JEDE ZEILE Triggerstmt

trigger_name: benutzerdefinierter Triggername;

trigger_time: identifiziert das Auslöseereignis, das als „before“ (ausgeführt vor dem Eintreten der Zeit) oder „after“ (ausgeführt nach dem Eintreten des Ereignisses) angegeben werden kann;

trigger_event: identifiziert das Trigger-Ereignis, einschließlich INSERT, UPDATE und DELETE;

table_name: die Tabelle, auf der der Trigger erstellt wird;

trigger_stmt: Anweisung zur Triggerausführung.

(2) Erstellen Sie einen Trigger mit mehreren Ausführungsanweisungen

Die grammatische Struktur ist wie folgt:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FÜR JEDE ZEILE

 BEGINNEN

  Anweisungsausführungsliste END

Wenn ein Trigger mindestens eine Ausführungsanweisung hat, müssen mehrere Ausführungsanweisungen mit BEGIN und END umschlossen werden, die jeweils den Anfang und das Ende des gesamten Codeblocks angeben.

Um den Triggervorgang zu demonstrieren, erstellen wir drei Datentabellen:

Tabelle tb_student erstellen(

   ID int Primärschlüssel auto_increment,

   Name varchar(10)

);

Tabelle tb_before_trigger erstellen(

   ID int Primärschlüssel auto_increment,

   Anzahl Int,

   Zeit_jetzt Datum/Uhrzeit NULL STANDARD AKTUELLER_ZEITSTEMPEL

);

Tabelle tb_after_trigger erstellen(

   ID int Primärschlüssel auto_increment,

   Anzahl Int,

   Zeit_jetzt Datum/Uhrzeit NULL STANDARD AKTUELLER_ZEITSTEMPEL

);

Beispiel 1: Erstellen Sie einen Trigger mit dem Namen before_trigger. Dieser Trigger wird ausgelöst, bevor jeder Einfügevorgang in der Tabelle tb_student ausgeführt wird. Wenn er ausgelöst wird, wird ein Datensatz, der die Gesamtzahl der Datensätze in der Tabelle tb_student enthält, in die Tabelle before_trigger eingefügt.

Trennzeichen //

Trigger erstellen before_trigger vor dem Einfügen

   auf tb_student für jede Zeile

   beginnen

     in tb_before_trigger (num) einfügen, count(*) aus tb_student auswählen;

   Ende

   //

Trennzeichen ;

Beispiel 2: Erstellen Sie einen Trigger mit dem Namen after_trigger, der vor jedem Einfügevorgang in der Tabelle tb_student ausgelöst wird. Bei Auslösung wird ein Datensatz, der die Gesamtzahl der Datensätze in der Tabelle tb_student enthält, in die Tabelle before_trigger eingefügt.

Trennzeichen //

Trigger erstellen after_trigger nach Einfügen

   auf tb_student für jede Zeile

   beginnen

     in tb_after_trigger (num) einfügen, count(*) aus tb_student auswählen;

   Ende

   //

Trennzeichen ;

Testen wir die in Beispiel 1 und Beispiel 2 erstellten Trigger und fügen einen Datensatz in die Tabelle tb_student ein (in den ersten drei Tabellen sind keine Datensätze vorhanden):

in tb_student (Name) Werte einfügen („zhangsan“);

Nach dem Einfügen können Sie die Daten in den drei Tabellen anzeigen:

tb_student-Tabelle:

tb_before_trigger-Tabelle:

tb_after_trigger-Tabelle:

Es ist ersichtlich, dass nach der Ausführung des Einfügevorgangs in der Tabelle tb_student auch die anderen beiden Tabellen jeweils Datensätze aktualisieren. Der Num-Wert der Tabelle tb_before_trigger ist 0, was beweist, dass der Datensatz eingefügt wurde, bevor der Einfügevorgang in tb_student ausgeführt wurde; der Num-Wert der Tabelle tb_after_trigger ist 1, was beweist, dass der Datensatz eingefügt wurde, nachdem der Einfügevorgang in tb_student ausgeführt wurde – dies ist der Unterschied zwischen vorher und nachher.

Bei anderen bedingten Auslösern ähnelt die Verwendung Beispiel 1 und Beispiel 2, wird in diesem Artikel jedoch nicht demonstriert.

4 Auslöser anzeigen

(1) Anweisung zum Anzeigen von Triggern

Mit der Anweisung „show triggers“ können Sie die in Beispiel 1 und Beispiel 2 erstellten Trigger anzeigen:

Auslöser anzeigen;

Ausgabe:

(2) Trigger in der Trigger-Tabelle anzeigen

Alle in der MySQL-Datenbank in der Trigger-Tabelle der Datenbank information_schema gespeicherten Trigger können über die folgende Abfrageanweisung angezeigt werden:

Wählen Sie * aus information_schema.triggers, wobei Triggername = „vor_Trigger“ ist.

Ausgabe:

Wenn keine Abfragebedingung angegeben ist, werden alle Triggerinformationen angezeigt.

5. Trigger löschen

Mit der Anweisung DROP TRIGGER können Sie einen Trigger löschen. Die grundlegende Syntaxstruktur lautet wie folgt:

DROP TRIGGER [Schemaname] Triggername

Unter diesen gibt schema_name den Datenbanknamen an und ist ein optionaler Parameter. Wenn er weggelassen wird, bedeutet dies, dass der Trigger aus der aktuellen Datenbank gelöscht wird.

Beispiel 3: Löschen Sie den in Beispiel 1 erstellten Trigger before_trigger

Auslöser vor_Auslöser löschen;

6 Fazit

Zu bestimmten Zeiten können Trigger das Tüpfelchen auf dem i sein, sie sind jedoch nicht sehr effizient. Versuchen Sie daher, sie so wenig wie möglich zu verwenden.

Autor: Ao Chen

Github: https://github.com/ChenHuabin321

Oben finden Sie eine ausführliche Erläuterung der Trigger der MySQL-Datenbank. Weitere Informationen zu MySQL-Triggern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • MySQL verwendet Trigger, um das Zeilenlimit der Tabelle in der Datenbank zu lösen. Detaillierte Erklärung und Beispiele
  • Erste Schritte mit gespeicherten Prozeduren, Triggern und Ereignisplanern in MySQL
  • Detaillierte Erläuterung des MySQL-Trigger-Trigger-Beispiels
  • Einführung in die Verwendung sowie Vor- und Nachteile von MySQL-Triggern
  • Verwendung von MySQL-Triggern
  • Ein Artikel, der Ihnen ein tiefes Verständnis von Mysql-Triggern vermittelt
  • Verwendung von MySQL-Triggern
  • Detaillierte Erklärung des MySQL-Triggerbeispiels
  • MySQL-Datenbank-Trigger vom Anfänger bis zum Profi

<<:  Zusammenfassung der Methoden zur Änderung des Git-Commit-Protokolls

>>:  Warum wird nicht empfohlen, in Vue eine leere Zeichenfolge als Klassennamen zu verwenden?

Artikel empfehlen

Einfaches Grafik-Tutorial zur Verwendung von Adobe Brackets

Adobe Brackets ist eine Open Source-, einfache un...

Prozessdiagramm für die Ideenbereitstellung und Tomcat-Dienstimplementierung

Konfigurieren Sie zunächst die Projektartefakte K...

So stellen Sie DoNetCore mit Nginx in der Alibaba Cloud bereit

Grundlegende Umgebungskonfiguration Bitte kaufen ...

Eine kurze Einführung in MySQL-Datenbankoptimierungstechniken

Eine ausgereifte Datenbankarchitektur ist nicht v...

So implementieren Sie eine geplante Sicherung der CentOS MySQL-Datenbank

Das folgende Skript wird für die geplante Sicheru...

Detaillierte Installation und Konfiguration von hadoop2.7.2 unter Ubuntu15.10

Im Internet und in vielen Büchern gibt es viele T...

impress.js Präsentationsschicht-Framework (Demonstrationstool) - erste Erfahrungen

Ich habe ein halbes Jahr lang nicht gebloggt, wofü...

JavaScript, um einen ausgefallenen Karusselleffekt zu erzielen

In diesem Artikel werden zwei Methoden zur Implem...

Detaillierte Erklärung der Datentypen und Schemaoptimierung in MySQL

Ich lerne derzeit etwas über MySQL-Optimierung. D...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...