Trigger können dazu führen, dass vor oder nach der Ausführung einer Anweisung anderer SQL-Code ausgeführt wird. Trigger können lesen, welche Daten durch die auslösende Anweisung geändert wurden, es gibt aber keinen Rückgabewert. Daher können Sie Trigger verwenden, um Geschäftslogikeinschränkungen durchzusetzen, ohne entsprechenden Code in der Anwendung zu schreiben. Aus der obigen Beschreibung können wir ersehen, dass Trigger die Logik der Anwendung vereinfachen und die Leistung verbessern können. Dies liegt daran, dass durch die Verwendung von Triggern die Anzahl der Interaktionen zwischen der Anwendung und dem Server reduziert wird. Darüber hinaus helfen Trigger dabei, Normalisierung und Statistiken automatisch zu aktualisieren. Beispielsweise können wir Trigger verwenden, um den gesamten Transaktionsbetrag, die Anzahl der Bestellungen und den durchschnittlichen Bestellwert automatisch zu zählen. Allerdings sind die Anwendungsszenarien von MySQL-Triggern auch sehr begrenzt. Wenn Sie Trigger aus anderen Datenbankprodukten verwendet haben, gehen Sie nicht davon aus, dass MySQL dieselben Funktionen erreichen kann. Beispiel:
CREATE TRIGGER Triggername VOR | NACH Triggerereignis ON Tabellenname FÜR JEDE ZEILE BEGINNEN Anweisungsliste ausführen; ENDE Die Liste der Ausführungsanweisungen unterstützt einzelne oder mehrere Anweisungen. Im Folgenden finden Sie ein Beispiel für mehrere Anweisungen: TRENNUNGSZEICHEN $$ Erstellen Sie den Trigger user_create_log nach dem Einfügen auf t_users für jede Zeile BEGINNEN DECLARE log_info VARCHAR(40) Zeichensatz utf8; DECLARE description VARCHAR (20) character set utf8;#Später wurde festgestellt, dass die chinesische Zeichenkodierung verstümmelt war, daher wurde der Zeichensatz hier festgelegt SET description = " wird erstellt"; SET log_info = CONCAT(NEW.user_name, description); #CONCAT-Funktion kann Zeichenfolgen verketten INSERT INTO logs(log) values(log_info); ENDE $$ TRENNUNGSZEICHEN ;
Die größte Einschränkung besteht im Design von FOR EACH ROW, das manchmal die Verwendung von Triggern zum Verwalten von Statistiken und Cache-Tabellen verhindert, da dies langsam sein kann. Der Hauptgrund für die Verwendung von Triggern besteht darin, dass sie im Vergleich zu geplanten synchronen Aktualisierungen die Datenkonsistenz konsistent aufrechterhalten können. Trigger können außerdem keine Atomarität garantieren. Beispielsweise kann ein Trigger, der eine MyISAM-Tabelle aktualisiert, nicht zurückgesetzt werden, wenn in der Quell-SQL-Anweisung ein Fehler auftritt. Darüber hinaus können die Auslöser selbst fehlerhaft sein. Wenn wir AFTER UPDATE basierend auf der MyISAM-Datentabelle verwenden, um eine andere Tabelle zu aktualisieren. Wenn beim Trigger ein Fehler auftritt, der dazu führt, dass die Operation an der zweiten Tabelle fehlschlägt, wird für die Operation an der ersten Tabelle kein Rollback ausgeführt. Mit InnoDB-Trigger verbundene Operationen, einschließlich Quellanweisungen, erfolgen alle in derselben Transaktion und erfüllen daher die Atomaritätsanforderungen. Wenn Sie jedoch InnoDB-Trigger verwenden, um die Datenkonsistenz mit einer anderen Tabelle zu überprüfen, kann dies bei mangelnder Vorsicht zu falschen Ergebnissen führen. Wenn Sie beispielsweise Trigger zum Simulieren von Fremdschlüsseln verwenden müssen, können Sie mit einem BEFORE INSERT-Trigger überprüfen, ob ein entsprechender Datensatz in einer anderen Tabelle vorhanden ist. Wenn Sie jedoch SELECT FOR UPDATE nicht verwenden, wenn der Trigger Daten aus einer anderen Tabelle liest, können aufgrund von Parallelitätsproblemen falsche Ergebnisse auftreten. Obwohl der Auslöser einige Mängel aufweist, bedeutet das nicht, dass er nicht verwendet werden kann. Umgekehrt können Trigger auch allein nützlich sein, insbesondere für Einschränkungen, Systemwartungsaufgaben und die Aktualisierung von Statistiken. Sie können Trigger auch verwenden, um Änderungen in Datenzeilen aufzuzeichnen. Auf diese Weise können sogar Aufzeichnungen manueller Offline-Datenbankvorgänge (wie etwa die Reparatur fehlerhafter Daten) aufgezeichnet werden. Beim Einfügen von Daten in andere Auto-Increment-Primärschlüsseltabellen ist jedoch Vorsicht geboten. Dies kann bei replizierten Anweisungen zu Problemen führen, da die Auto-Increment-Werte bei zwei identischen Replikaten unterschiedlich sind. Abschluss: Trigger können ihre Vorteile in begrenzten Situationen ausspielen, beispielsweise bei statistischen Daten, Änderungsprotokollen von Datentabellen usw. Es gibt jedoch auch einige Mängel. Beispielsweise verringert die Aktualisierung großer Datenmengen die Effizienz aufgrund der zeilenweisen Auslösung. Außerdem kann die MyISAM-Engine keine Atomizität garantieren. Daher ist es vom Anwendungsszenario abhängig, ob ein Trigger vorhanden ist. Oben finden Sie detaillierte Informationen zur Verwendung von MySQL-Triggern. Weitere Informationen zu MySQL-Triggern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: JavaScript-Grundlagenoperatoren
Inhaltsverzeichnis 1. Was ist Curry 2. Verwendung...
Ich wollte vor Kurzem eine Website auf https-Zugr...
Vorwort Wir wissen, dass die Indexauswahl Aufgabe...
ElementUI implementiert das Tutorial zum Paginier...
Vorwort Manchmal sehen wir beim Anzeigen von Date...
Kurz gesagt, heute sprechen wir über die Verwendu...
In diesem Artikelbeispiel wird der spezifische Co...
In diesem Artikelbeispiel wird der spezifische Co...
Heute Wählen Sie * aus Tabellenname, wobei to_day...
Ziehen Sie das Bild: [mall@VM_0_7_centos ~]$ sudo...
Inhaltsverzeichnis 1. Schloss und Riegel 2. Wiede...
Im vorherigen Artikel habe ich beschrieben, wie s...
Vorwort Bei unserer täglichen Arbeit führen wir m...
Manchmal müssen Sie basierend auf der offiziell v...
Nach der VIP-Konfiguration wird beim Aktiv/Standb...