Dieser Artikel erläutert anhand von Beispielen die Prinzipien und die Verwendung von MySQL-Triggern. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: In diesem Artikel:- Was ist ein Auslöser
- Erstellen eines Triggers
- Einzelne Trigger-Anweisung
- Mehrere Triggeranweisungen
- Trigger anzeigen
- Löschen eines Triggers
- Neue und alte Datensatzverweise in Triggern
Veröffentlichungsdatum: 14.04.2018
Was ist ein Auslöser:- Trigger dienen dazu, nach bestimmten Aktionen „automatisch“ bestimmte Aktionen 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 Sie einen Trigger:- Syntax: Trigger erstellen, Triggername vor|nach Ereignis auf 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.
- Beispiel: Im Folgenden sind neue Daten aufgeführt, die in den Zeitplan für die Benutzererstellung eingefügt werden, wenn ein neuer Benutzer eingefügt wird. Dabei handelt es sich um die aktuelle Uhrzeit.
Trigger erstellen trigger_addUserTime
vor
einfügen
auf user_info
für jede Zeile
in usercreatetime(create_time) Werte einfügen(jetzt());
Tabelle „user_info“ erstellen (
ID int Primärschlüssel auto_increment,
Benutzername varchar(20) nicht null,
Passwort varchar(20) nicht null
)
Tabelle erstellen usercreatetime(
ID int Primärschlüssel auto_increment,
Erstellungszeitpunkt Datum/Uhrzeit
);
Erstellen Sie den Trigger „trigger_addUserTime“, bevor Sie für jede Zeile der Benutzerinfo das Einfügen in „usercreatetime(create_time) values(now())“ durchführen.
in user_info(Benutzername, Passwort) einfügen Werte("admin","admin888");
Wählen Sie * aus Benutzererstellungszeit; Mehrere Triggeranweisungen:- Sie müssen mehrere Anweisungen in begin end einschließen.
- Zum Beispiel:

- Beachten Sie jedoch, dass die obige Situation nicht für den Befehlszeilenmodus gilt (das obige wird in Navicat ausgeführt). Wenn Sie es in der Befehlszeile ausführen möchten, müssen Sie das Befehlsabschlusszeichen ändern (MySQL-Befehle verwenden standardmäßig ";" als Anweisungsabschlusszeichen. Wenn wir es nicht ändern, wird die Anweisung als beendet betrachtet, wenn Sie eine Triggeranweisung eingeben und mit ; beenden, und es wird ein Fehler gemeldet, weil die Anweisung unvollständig ist) [benutzerdefiniertes Trennzeichen - ändert das Anweisungsabschlusszeichen vorübergehend in ein angegebenes Symbol].
- [Definieren Sie das Endzeichen als $$ und verwenden Sie es in der Trigger-Anweisung; Ende]
Trennzeichen $$ – normalerweise definiert als $$
Trigger erstellen, Triggername vor|nach Ereignis für Tabellenname für jede Zeile
beginnen
Aussage; Aussage;
Ende
$$
Trennzeichen ;
-- Beispiel-Trennzeichen $$ -- Im Allgemeinen definiert als $$
Erstellen Sie den Trigger trigger_addUserTime23 vor dem Einfügen in user_info für jede Zeile
beginnen
in usercreatetime(create_time) Werte einfügen(jetzt());
in usercreatetime(create_time) Werte einfügen(jetzt());
Ende
$$
Trennzeichen ;
 
Auslöser anzeigen:- Verwenden Sie show triggers\G, um alle Trigger anzuzeigen
 - Zeigen Sie den Trigger im Datenbankinformationsschema an, indem Sie die Triggertabelle anzeigen: Verwenden Sie select * from triggers\G; [Natürlich können Sie den Triggernamen als Where-Bedingung zum Suchen von Daten verwenden]
 - Zeigen Sie die Anweisung zur Triggererstellung an: „show create trigger trigger name\G;“
So löschen Sie einen Trigger:- Verwenden Sie den Drop-Trigger-Triggernamen; um den Trigger zu löschen
Die alten und neuen Datensätze, auf die der Trigger verweist:- In manchen Fällen müssen Sie möglicherweise auf frühere Daten zurückgreifen, z. B. wenn die Zahl der Studierenden steigt und Sie die vorherige Zahl der Studierenden kennen müssen.
- Neu sind die neu eingefügten Daten, alt sind die Originaldaten [beim Einfügen gibt es keine alten Daten, beim Löschen keine neuen Daten und beim Aktualisieren sowohl alte als auch neue Daten]. (Dies bezieht sich auf den Ereignistyp)]
- Verwenden Sie odl\new.fieldname, um auf Daten zu verweisen. (Beachten Sie, dass es sich bei den referenzierten Daten um die Anweisung handelt, die den Auslöser (das Ereignis) ausgelöst hat.)
- Hier ist ein Beispiel: (Wenn Sie einen Studentendatensatz einfügen, erhalten Sie den Namen des neu eingefügten Studenten über new.name und fügen Sie new.name dann in eine andere Tabelle ein.)
Tabelle „Student“ erstellen (
ID int Primärschlüssel auto_increment,
Name varchar(15) nicht null,
Geschlecht varchar(15) nicht null
);
Tabelle stu_info erstellen(
Name varchar(15) nicht null
);
Trigger „addCount“ vor dem Einfügen für Studenten erstellen
für jede Zeile
in stu_info Werte einfügen (neuer Name);
in Student einfügen (Name, Geschlecht) Werte („lilei“, „männlich“);
wähle * aus stu_info;
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:- Verwendung und Verständnis von MySQL-Triggern
- Detaillierte Erklärung der MySQL-Datenbank-Trigger
- MySQL-Triggersyntax und Anwendungsbeispiele
- Einführung in die Verwendung sowie Vor- und Nachteile von MySQL-Triggern
|