Einführung in MySQL-Trigger, Erstellen von Triggern und Analyse von Nutzungsbeschränkungen

Einführung in MySQL-Trigger, Erstellen von Triggern und Analyse von Nutzungsbeschränkungen

Dieser Artikel beschreibt anhand von Beispielen die Einführung in MySQL-Trigger, die Erstellung von Triggern und deren Verwendungsbeschränkungen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Einführung

Ein SQL-Trigger ist eine Reihe von SQL-Anweisungen, die im Datenbankkatalog gespeichert sind. Ein SQL-Trigger wird immer dann ausgeführt oder ausgelöst, wenn ein mit einer Tabelle verknüpftes Ereignis eintritt, beispielsweise ein Einfügen, Aktualisieren oder Löschen. SQL-Trigger können auch als ein spezieller Typ gespeicherter Prozeduren betrachtet werden. Das Besondere daran ist, dass es nicht wie eine gespeicherte Prozedur direkt aufgerufen wird. Der Hauptunterschied zwischen Triggern und gespeicherten Prozeduren besteht darin, dass Trigger automatisch aufgerufen werden, wenn Datenänderungsereignisse für eine Tabelle ausgeführt werden, während gespeicherte Prozeduren explizit aufgerufen werden müssen.

Schauen wir uns nun die Vorteile von SQL-Triggern an:

  • SQL-Trigger bieten eine alternative Methode zur Überprüfung der Datenintegrität.
  • SQL-Trigger können Fehler in der Geschäftslogik in der Datenbankebene abfangen.
  • SQL-Trigger bieten eine weitere Möglichkeit, geplante Aufgaben auszuführen. Durch die Verwendung von SQL-Triggern müssen Sie nicht auf die Ausführung einer geplanten Aufgabe warten, da der Trigger automatisch aufgerufen wird, bevor oder nachdem eine Änderung an den Daten in der Tabelle vorgenommen wird.
  • SQL-Trigger sind sehr nützlich, um Änderungen an Daten in Tabellen zu prüfen.

Schauen wir uns die Mängel an:

  • SQL-Trigger können nur eine erweiterte Validierung bereitstellen und können nicht die gesamte Validierung ersetzen. Auf der Anwendungsebene müssen einige einfache Validierungen durchgeführt werden. Sie können beispielsweise Benutzereingaben clientseitig mit JavaScript oder serverseitig mit einer serverseitigen Skriptsprache wie JSP, PHP, ASP.NET, Perl usw. validieren.
  • Der Aufruf und die Ausführung von SQL-Triggern aus der Client-Anwendung sind nicht sichtbar. Daher ist es schwierig herauszufinden, was in der Datenbankebene geschieht.
  • SQL-Trigger können den Overhead des Datenbankservers erhöhen.

Da Trigger ein spezieller Typ gespeicherter Prozeduren sind, stellt sich die Frage, wie wir zwischen ihnen wählen. Das Folgende ist nur ein Vorschlag. Wenn wir die Arbeit nicht mit gespeicherten Prozeduren erledigen können, können wir die Verwendung von SQL-Triggern in Betracht ziehen.

Erstellen eines Triggers

In MySQL ist ein Trigger eine Reihe von SQL-Anweisungen, die automatisch aufgerufen werden, wenn Änderungen an Daten in den zugehörigen Tabellen vorgenommen werden. Trigger können so definiert werden, dass sie vor oder nach einer Datenänderung durch eine Einfüge-, Aktualisierungs- oder Löschanweisung aufgerufen werden. Vor MySQL 5.7.2 konnten maximal sechs Trigger pro Tabelle definiert werden. Werfen wir einen Blick auf ihre kurze Einführung:

  • VOR DEM EINFÜGEN – Der Trigger wird aktiviert, bevor Daten in die Tabelle eingefügt werden.
  • AFTER INSERT – Aktiviert den Trigger, nachdem Daten in die Tabelle eingefügt wurden.
  • VOR DEM UPDATE – Aktiviert den Trigger, bevor die Daten in der Tabelle aktualisiert werden.
  • NACH UPDATE – Aktiviert den Trigger, nachdem die Daten in der Tabelle aktualisiert wurden.
  • VOR DEM LÖSCHEN – Der Trigger wird aktiviert, bevor Daten aus der Tabelle gelöscht werden.
  • NACH DEM LÖSCHEN – Der Trigger wird aktiviert, nachdem Daten aus der Tabelle gelöscht wurden.

Ab MySQL 5.7.2+ können Sie jedoch mehrere Trigger für dasselbe Triggerereignis und dieselbe Aktionszeit definieren. Wenn Sie Anweisungen verwenden, die Daten in einer Tabelle ändern, ohne INSERT-, DELETE- oder UPDATE-Anweisungen zu verwenden, werden die mit der Tabelle verknüpften Trigger nicht aufgerufen. Beispielsweise löscht die Truncate-Anweisung alle Daten in einer Tabelle, ruft aber keine mit der Tabelle verknüpften Trigger auf. Einige Anweisungen verwenden jedoch die INSERT-Anweisung im Hintergrund, z. B. die REPLACE-Anweisung oder die LOAD DATA-Anweisung. Bei Verwendung dieser Anweisungen werden die entsprechenden, mit der Tabelle verknüpften Trigger aufgerufen. Daher müssen wir für jeden mit der Tabelle verknüpften Trigger einen eindeutigen Namen verwenden. Es empfiehlt sich, für verschiedene Tabellen den gleichen Triggernamen zu definieren. Schauen wir uns die Syntaxstruktur zum Definieren eines Triggers an:

(VORHER | NACHHER)_Tabellenname_(EINFÜGEN | AKTUALISIEREN | LÖSCHEN)

Beispielsweise ist before_order_update ein Trigger, der aufgerufen wird, bevor eine Zeile in der Auftragstabelle aktualisiert wird. Schauen wir uns eine andere Definition an:

Tabellenname_(VORHER | NACHHER)_(EINFÜGEN | AKTUALISIEREN | LÖSCHEN)

Beispielsweise ist order_before_update dasselbe wie der oben beschriebene Trigger before_order_update.

MySQL speichert Trigger im Datenverzeichnis, zum Beispiel: /data/luyaran/, und verwendet Dateien mit den Namen tablename.TRG und triggername.TRN:

  • Die Datei tablename.TRG ordnet den Trigger der entsprechenden Tabelle zu.
  • Die Datei triggername.TRN enthält die Triggerdefinition.

Wir können also MySQL-Trigger sichern, indem wir die Triggerdateien in den Sicherungsordner kopieren, und wir können auch das Tool mysqldump verwenden, um die Trigger zu sichern.

Nutzungsbeschränkung

MySQL-Trigger decken die gesamte in Standard-SQL definierte Funktionalität ab. Bei der Verwendung in Ihren Anwendungen gelten jedoch einige Einschränkungen:

  • Wird in den Anweisungen SHOW, LOAD DATA, LOAD TABLE, BACKUP DATABASE, RESTORE, FLUSH und RETURN verwendet.
  • Verwenden Sie Anweisungen, die implizit oder explizit ein Commit oder Rollback durchführen, wie etwa COMMIT, ROLLBACK, START TRANSACTION, LOCK/UNLOCK TABLES, ALTER, CREATE, DROP, RENAME usw.
  • Verwenden Sie vorbereitete Anweisungen wie PREPARE, EXECUTE usw.
  • Verwenden Sie dynamische SQL-Anweisungen.

Okay, das ist alles zu diesem Eintrag.

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-Triggersyntax und Anwendungsbeispiele
  • Detaillierte Erläuterung der gespeicherten Prozedur „MySql View Trigger“
  • MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen
  • Implementierungscode für den MySQL-Protokolltrigger
  • Beispiel für die MySQL-Triggeroperation „Hinzufügen“, „Löschen“, „Ändern“ und „Abfragen“
  • MySQL-Trigger: Beispielanalyse zum Erstellen mehrerer Trigger
  • MySQL-Trigger: Erstellen und Verwenden von Triggern
  • Einfaches Beispiel für die Definition und Verwendung von MySQL-Triggern
  • Detaillierte Erklärung des Konzepts, Prinzips und der Verwendung von MySQL-Triggern
  • Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]
  • Detaillierte Erklärung der MySQL-Datenbank-Trigger

<<:  Detaillierte Erklärung zur Verwendung selbstverschachtelter Vue-Baumkomponenten

>>:  Verwenden Sie ein Shell-Skript, um die Python3.8-Umgebung in CentOS7 zu installieren (empfohlen)

Artikel empfehlen

Detaillierte Erläuterung der TCPdump-Befehlsbeispiele in Linux

Vorwort Einfach ausgedrückt ist tcpdump ein Paket...

Implementierung der Parametersprungfunktion im Vue-Projekt

Seitenbeschreibung:​ Hauptseite: Name —> shish...

So implementieren Sie mehrere Parameter in el-dropdown in ElementUI

Aufgrund der zunehmenden Anzahl von Schaltflächen...

So verwenden Sie Docker-Compose, um Django-Anwendungen offline bereitzustellen

Inhaltsverzeichnis Installieren Sie Docker-ce für...

Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Problemhintergrund: Wenn Sie Docker zum Bereitste...

Detaillierte Bereitstellung des Alibaba Cloud Servers (grafisches Tutorial)

Ich habe vor Kurzem Front-End- und Back-End-Techn...

CSS-Beispielcode zum Ausblenden der Bildlaufleiste und Scrollen des Inhalts

Vorwort Wenn die HTML-Struktur einer Seite viele ...

Zusammenfassung der vier Möglichkeiten zum Durchlaufen eines Arrays in JS

Dieser Artikel vergleicht und fasst vier Möglichk...

Lösen Sie das Problem der blockierenden Positionierungs-DDL in MySQL 5.7

Im vorherigen Artikel „Änderungen der MySQL-Tabel...