Verwendung von MySQL-Triggern

Verwendung von MySQL-Triggern

1. Trigger-Einführung

1. Was ist ein Auslöser?

Ein Trigger ist ein mit einer Tabelle verknüpftes Datenbankobjekt, das ausgelöst wird, wenn die definierten Bedingungen erfüllt sind, und die im Trigger definierte Anweisungsgruppe ausführt.

2. Eigenschaften von Auslösern

  • Es gibt einen Hauptteil mit dem Namen „begin begin end ; die Anweisungen zwischen begin end end“ können einfach oder komplex sein.
  • Welche Bedingungen lösen aus: I, D, U
  • Auslösezeitpunkt: vor oder nach dem Hinzufügen, Löschen oder Ändern
  • Triggerfrequenz: Für jede Zeile ausführen
  • Trigger werden für Tabellen definiert und an diese angehängt.

Das heißt, ein Vorgang wird durch ein Ereignis ausgelöst, zu dem INSERT , UPDATE und DELETE -Anweisungen gehören. Dies kann der Anwendung dabei helfen, die Datenintegrität auf der Datenbankseite sicherzustellen.

Hinweis: cannot associate a trigger with a TEMPORARY table or a view.

! ! Die Verwendung von Triggern sollte so wenig wie möglich erfolgen, es wird jedoch nicht empfohlen.

Angenommen, der Trigger benötigt bei jeder Auslösung 1 Sekunde insert table 500 , dann muss der Trigger 500 Mal ausgelöst werden. Allein die Ausführungszeit des Triggers beträgt 500s , und insert 500 Datensätzen dauert insgesamt 1 Sekunde, sodass die Effizienz dieses insert sehr gering ist. Daher müssen wir besonders darauf achten, dass die Ausführungseffizienz der Anweisungen zwischen的begin end des Triggers hoch und der Ressourcenverbrauch gering sein muss.

Verwenden Sie Trigger so wenig wie möglich, da sie in jedem Fall sehr ressourcenintensiv sind. Wenn Sie sie verwenden, gehen Sie mit Vorsicht vor und stellen Sie sicher, dass sie sehr effizient sind: Trigger gelten für jede Zeile. Denken Sie daran, Trigger nicht für Tabellen zu verwenden, die häufig hinzugefügt, gelöscht und geändert werden, da sie sehr ressourcenintensiv sind.

2. Erstellen Sie einen Trigger

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

trigger_time: { VORHER | NACHHER }

trigger_event: { EINFÜGEN | AKTUALISIEREN | LÖSCHEN }

trigger_order: { FOLGT | GEHT VORAUS } other_trigger_name

> BEFORE und AFTER geben an, wann der Trigger ausgeführt wird, vor oder nach dem Ereignis.

> FOR EACH ROW bedeutet, dass jede Operation an einem Datensatz, die das Triggerereignis erfüllt, den Trigger auslöst, d. h. der Trigger wird einmal für jede Datenzeile ausgelöst.

> tigger_event Details:

①INSERT型觸發器: Der Trigger wird aktiviert, wenn eine Zeile eingefügt wird. Dies kann durch die Anweisungen INSERT , LOAD DATA oder REPLACE ausgelöst werden (die Anweisung LOAD DAT wird zum Laden einer Datei in eine Datentabelle verwendet, was einer Reihe von INSERT-Operationen entspricht).

②UPDATE型觸發器: Der Trigger wird aktiviert, wenn eine Zeile geändert wird, was durch UPDATE Anweisung ausgelöst werden kann.

③DELETE型觸發器: Der Trigger wird aktiviert, wenn eine Zeile gelöscht wird, was durch DELETE oder REPLACE Anweisungen ausgelöst werden kann.

> trigger_order ist eine Funktion nach MySQL5.7 , die verwendet wird, um mehrere Trigger zu definieren und mithilfe follows (nachgestellt) oder precedes (vorher) die Reihenfolge auszuwählen, in der die Trigger ausgeführt werden.

1. Erstellen Sie einen Trigger mit nur einer Ausführungsanweisung

CREATE TRIGGER Triggername BEFORE|AFTER Triggerereignis ON Tabellenname FOR EACH ROW Anweisung ausführen;

Beispiel 1: Erstellen Sie einen Trigger mit dem Namen trig1. Sobald eine Einfügeaktion in der Arbeitstabelle ausgeführt wird, wird die aktuelle Zeit automatisch in die Zeittabelle eingefügt.

mysql> TRIGGER ERSTELLEN trig1 NACH EINFÜGEN
    -> ON Arbeit für jede Zeile
    -> IN Zeitwerte einfügen (JETZT());
 

2. Erstellen Sie einen Trigger mit mehreren Ausführungsanweisungen

CREATE TRIGGER Triggername BEFORE|AFTER Triggerereignis

AUF Tabellenname FÜR JEDE ZEILE

BEGINNEN

Anweisungsliste ausführen

ENDE;

Beispiel 2: Definieren Sie einen Trigger, der die Anweisungen in BEGIN und END ausführt, sobald ein Löschvorgang die Bedingungen erfüllt.

mysql> TRENNUNGSZEICHEN ||
mysql> TRIGGER TRIG2 ERSTELLEN VOR DEM LÖSCHEN
    -> ON Arbeit für jede Zeile
    -> BEGIN
    -> IN Zeitwerte einfügen (JETZT());
    -> IN Zeitwerte einfügen (JETZT());
    -> ENDE||
mysql> TRENNUNGSZEICHEN ;
 

3. Detaillierte Erklärung von NEU und ALT

MySQL definiert NEW und OLD , um die Datenzeile in der Tabelle anzugeben, in der sich der Trigger befindet, und um auf den Datensatzinhalt zu verweisen, der sich im Trigger geändert hat. Genauer gesagt:

在INSERT wird NEW verwendet, um neue Daten anzuzeigen, die eingefügt werden sollen ( BEFORE ) oder eingefügt wurden ( AFTER ).

② In einem在UPDATE Trigger wird OLD verwendet, um die Originaldaten anzuzeigen, die geändert werden sollen oder wurden, und NEW wird verwendet, um die neuen Daten anzuzeigen, die geändert werden sollen oder wurden.

③In einem在DELETE Trigger wird OLD verwendet, um die Originaldaten anzuzeigen, die gelöscht werden sollen oder wurden.

Anwendung:

NEW.columnName (columnName ist der Name einer Spalte in der entsprechenden Datentabelle)

Darüber hinaus ist OLD schreibgeschützt, während NEW im Trigger SET Zuweisung verwenden kann, sodass der Trigger nicht erneut ausgelöst wird, was zu einem zirkulärem Aufruf führen würde (fügen Sie beispielsweise vor dem Einfügen jedes Studenten „2013“ zur Studentennummer hinzu).

Beispiel 3:

mysql> CREATE TABLE-Konto (acct_num INT, Betrag DECIMAL (10,2));
mysql> INSERT INTO Konto WERTE(137,14,98),(141,1937,50),(97,-100,00);

mysql> Trennzeichen $$
mysql> CREATE TRIGGER upd_check VOR UPDATE AUF Konto
    -> FÜR JEDE ZEILE
    -> BEGIN
    -> WENN NEUER.Betrag < 0 DANN
    -> SETZEN SIE NEU.Betrag = 0;
    -> SONST WENN NEU.Betrag > 100 DANN
    -> SETZEN SIE NEU.Betrag = 100;
    -> ENDE, WENN;
    -> ENDE$$
mysql> Trennzeichen;

mysql> Konto aktualisieren, Betrag festlegen=-10, wobei acct_num=137;

mysql> wähle * vom Konto aus;
+----------+---------+
| Kontonummer | Betrag |
+----------+---------+
| 137 | 0,00 |
| 141 | 1937,50 |
| 97 | -100,00 |
+----------+---------+

mysql> Konto aktualisieren, Betrag=200 festlegen, wobei acct_num=137;

mysql> wähle * vom Konto aus;
+----------+---------+
| Kontonummer | Betrag |
+----------+---------+
| 137 | 100,00 |
| 141 | 1937,50 |
| 97 | -100,00 |
+----------+---------+
 

3. Auslöser anzeigen

1. SHOW TRIGGERS-Anweisung zum Anzeigen von Triggerinformationen

mysql> TRIGGERS ANZEIGEN\G;

Als Ergebnis werden Basisinformationen aller Trigger angezeigt, eine Abfrage des angegebenen Triggers ist nicht möglich.

2. Triggerinformationen in der Tabelle information_schema.triggers anzeigen

mysql> SELECT * FROM information_schema.triggers\G

Als Ergebnis werden Detailinformationen zu allen Triggern angezeigt, gleichzeitig können mit dieser Methode Detailinformationen zu einem bestimmten Trigger abgefragt werden.

mysql> wähle * aus information_schema.triggers 
    -> wobei trigger_name='upd_check'\G;
Tipps:

Alle Triggerinformationen werden in der triggers unter der Datenbank information_schema gespeichert und können mit der SELECT -Anweisung abgefragt werden. Wenn zu viele Triggerinformationen vorhanden sind, ist es am besten, die Abfrage mit dem Feld TRIGGER_NAME anzugeben.

4. Trigger löschen

DROP TRIGGER [WENN EXISTIERT] [schema_name.]trigger_name

Nach dem Löschen des Triggers überprüfen Sie ihn am besten noch einmal mit der oben beschriebenen Methode, gleichzeitig können Sie mit database.trig auch einen Trigger in einer bestimmten Datenbank angeben.

Tipps:

Um unerwartete Vorgänge zu vermeiden, ist es wichtig , einen Trigger zu löschen, wenn er nicht mehr benötigt wird.

Dies ist das Ende dieses Artikels über die Verwendung von MySQL trigger . Weitere Informationen zur Verwendung von MySQL trigger finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Themenverfeinerung für MySQL-Ereignisse und -Trigger
  • MySQL-Datenbank-Trigger vom Anfänger bis zum Profi
  • 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
  • Detaillierte Erläuterung der Idee des MySQL-Triggers zur Echtzeiterkennung einer Anweisung zum Sichern und Löschen
  • Ein Artikel, der Ihnen ein tiefes Verständnis von Mysql-Triggern vermittelt
  • Verwendung von MySQL-Triggern
  • Verwendung von MySQL-Triggern einfach erklärt

<<:  Fähigkeiten zur Seiten-Refaktorierung - Inhalt

>>:  Detaillierte Erklärung des Unterschieds zwischen Flex und Inline-Flex in CSS

Artikel empfehlen

So deinstallieren Sie Node und NPM vollständig auf dem Mac

npm deinstallieren sudo npm deinstallieren npm -g...

Docker löscht private Bibliotheksbilder vollständig

Werfen wir zunächst einen Blick auf die allgemein...

VUE+Canvas realisiert den gesamten Prozess eines einfachen Gobang-Spiels

Vorwort In Bezug auf das Layout ist Gobang viel e...

So stellen Sie mit Docker ein einfaches C/C++-Programm bereit

1. Erstellen Sie zunächst eine Datei hello-world....

Lösung für die hohe CPU-Auslastung des Tomcat-Prozesses

Inhaltsverzeichnis Fall Kontextwechsel-Overhead? ...

So verwenden Sie vue3 zum Erstellen einer Materialbibliothek

Inhaltsverzeichnis Warum brauchen wir eine Materi...

So überprüfen Sie die Festplattengröße und mounten die Festplatte in Linux

Es gibt zwei Arten von Festplatten in Linux: gemo...