MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen

MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen

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: image
  • 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 ; 
    • imageimage


Auslöser anzeigen:

  • Verwenden Sie show triggers\G, um alle Trigger anzuzeigen image
  • 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] image
  • 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

<<:  JavaScript Canvas realisiert den Effekt des Neun-Quadrat-Rasterschneidens

>>:  Verwendung von benutzerdefinierten Nginx-Variablen und integrierten vordefinierten Variablen

Artikel empfehlen

JavaScript realisiert den Effekt der mobilen Modalbox

In diesem Artikelbeispiel wird der spezifische Ja...

Docker installiert ClickHouse und initialisiert den Datentest

Clickhouse-Einführung ClickHouse ist ein spalteno...

43 Webdesign-Fehler, auf die Webdesigner achten sollten

Dies ist ein Artikel über die Benutzerfreundlichk...

HTML verwendet Laufschrift, um Text nach links und rechts scrollen zu lassen

Code kopieren Der Code lautet wie folgt: <KÖRP...

Detailliertes Tutorial zur Installation des ElasticSearch:7.8.0-Clusters mit Docker

Der ElasticSearch-Cluster unterstützt動態請求的方式und靜態...

Vergleich der Vorteile von vue3 und vue2

Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...

Installations-Tutorial zur dekomprimierten Version von MySQL 5.7.23 für WinX64

Detailliertes Installations-Tutorial zur Dekompri...

Einfacher Vergleich von Meta-Tags in HTML

Das Meta-Tag wird verwendet, um Dateiinformationen...

Details zum Schreiben von React in einem Vue-Projekt

Wir können jsx/tsx-Dateien direkt erstellen Die P...

MySQL-Operationen: Operationen mit JSON-Datentyp

Im vorherigen Artikel haben wir das ausführliche ...

Vollständiges Beispiel einer Vue-Polling-Request-Lösung

Verständnis von Umfragen Tatsächlich liegt der Sc...

JavaScript ermittelt, ob der Browser IE ist

Als Frontend-Entwickler komme ich an den Tücken d...

CSS-Lösung für mehrspaltiges Layout

1. Feste Breite + adaptiv Erwarteter Effekt: fest...