VorwortBei der tatsächlichen Entwicklung stoßen wir häufig auf eine solche Situation: Es gibt zwei oder mehr miteinander verbundene Tabellen, beispielsweise werden Produktinformationen und Bestandsinformationen in zwei verschiedenen Datentabellen gespeichert. Wenn wir einen neuen Produktdatensatz hinzufügen, müssen wir, um die Integrität der Daten sicherzustellen, der Bestandstabelle auch einen Bestandsdatensatz hinzufügen. In diesem Fall müssen wir diese beiden zugehörigen Operationsschritte in das Programm schreiben und sie mit Transaktionen umschließen, um sicherzustellen, dass die beiden Operationen zu einer atomaren Operation werden, d. h. entweder werden alle oder keine ausgeführt. Unter besonderen Umständen müssen Sie die Daten möglicherweise manuell pflegen. Dabei kann es leicht passieren, dass Sie einen Schritt vergessen, was zu Datenverlust führt. Zu diesem Zeitpunkt können wir Trigger verwenden. Sie können einen Trigger erstellen, sodass der Einfügevorgang für Produktinformationsdaten automatisch den Einfügevorgang für Bestandsdaten auslöst. Auf diese Weise müssen Sie sich keine Sorgen über fehlende Daten machen, weil Sie vergessen haben, Bestandsdaten hinzuzufügen. 1. Trigger-ÜbersichtMySQL unterstützt Trigger ab Version 5.0.2. MySQL-Trigger sind wie gespeicherte Prozeduren in den MySQL-Server eingebettete Programme. Ein Trigger ist ein Ereignis, das eine Aktion auslöst, darunter INSERT-, UPDATE- und DELETE-Ereignisse. Ein Ereignis bezieht sich auf eine Aktion eines Benutzers oder das Auslösen eines Verhaltens. Wenn ein Trigger definiert ist und die Datenbank diese Anweisungen ausführt, entspricht dies dem Eintreten eines Ereignisses, und der Trigger wird automatisch ausgelöst, um die entsprechende Operation auszuführen. Wenn beim Einfügen, Aktualisieren und Löschen von Daten in eine Datentabelle eine Datenbanklogik automatisch ausgeführt werden muss, können Trigger zur Implementierung verwendet werden. 2. Erstellen von Triggern2.1 Triggersyntax erstellenDie Syntax zum Erstellen eines Triggers lautet: CREATE TRIGGER Triggername {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON Tabellenname FÜR JEDE ZEILE Der vom Trigger ausgeführte Anweisungsblock; veranschaulichen: ①Tabellenname: Gibt das vom Trigger überwachte Objekt an. ②VORHER|NACHHER: gibt die Auslösezeit an. VORHER bedeutet Auslösen vor dem Ereignis; NACHHER bedeutet Auslösen nach dem Ereignis. ③INSERT|UPDATE|DELETE: zeigt das ausgelöste Ereignis an. INSERT bedeutet, einen Datensatz einzufügen; UPDATE bedeutet, Datensätze zu aktualisieren; LÖSCHEN bedeutet, einen Datensatz zu löschen. ④ Der vom Trigger ausgeführte Anweisungsblock: Dies kann eine einzelne SQL-Anweisung oder ein zusammengesetzter Anweisungsblock sein, der aus der Struktur BEGIN...END besteht. 2.2 CodebeispieleBeispiel: ①Erstellen Sie eine Datentabelle: Tabelle erstellen Testtrigger ( Ich würde INT PRIMARY KEY AUTO_INCREMENT, t_note VARCHAR(30) ); Tabelle erstellen test_trigger_log ( Ich würde INT PRIMARY KEY AUTO_INCREMENT, t_log VARCHAR(30) ); ② Erstellen Sie einen Trigger: Erstellen Sie einen Trigger mit dem Namen „before_insert“ und fügen Sie die „before_insert“-Protokollinformationen in die „test_trigger_log“-Datentabelle ein, bevor Sie Daten in die „test_trigger“-Datentabelle einfügen. TRENNUNGSZEICHEN // CREATE TRIGGER before_insert VOR DEM INSERT ON test_trigger FÜR JEDE REIHE BEGINNEN INSERT INTO test_trigger_log (t_log) WERTE('vor_Einfügen'); ENDE // TRENNUNGSZEICHEN ; ③Fügen Sie Daten in die test_trigger-Datentabelle ein INSERT INTO test_trigger (t_note) VALUES ('Test VOR INSERT-Trigger'); ④ Zeigen Sie die Daten in der Datentabelle test_trigger_log an mysql> AUSWÄHLEN * AUS test_trigger_log; +----+---------------+ | Ich würde | t_log | +----+---------------+ | 1 | vor_Einfügen | +----+---------------+ 1 Zeile im Satz (0,00 Sek.) 3. Trigger anzeigen und löschen3.1 Auslöser anzeigenBeim Anzeigen von Triggern werden die Definition, der Status und die Syntaxinformationen von Triggern angezeigt, die bereits in der Datenbank vorhanden sind. Methode 1: Anzeigen der Definitionen aller Trigger in der aktuellen Datenbank TRIGGERS ANZEIGEN\G Methode 2: Anzeigen der Definition eines Triggers in der aktuellen Datenbank SHOW CREATE TRIGGER Triggername Methode 3: Abfrage der Informationen des Triggers „salary_check_trigger“ aus der Tabelle TRIGGERS in der Systembibliothek information_schema WÄHLEN SIE * AUS information_schema.TRIGGERS; 3.2 Löschen eines TriggersTrigger sind ebenfalls Datenbankobjekte. Um einen Trigger zu löschen, verwenden Sie die DROP-Anweisung. Die Syntax lautet wie folgt: DROP TRIGGER IF EXISTS - Triggername; 4. Vor- und Nachteile von Triggern4.1 Vorteile① Trigger können die Integrität der Daten sicherstellen. Angenommen, wir verwenden die Kopftabelle der Bestellung (demo.importhead), um die Gesamtinformationen der Bestellung zu speichern, einschließlich der Bestellnummer, Lieferantennummer, Lagernummer, Gesamtkaufmenge, Gesamtkaufbetrag und des Annahmedatums. Verwenden Sie die Tabelle mit den Bestelldetails (demo.importdetails), um die Details der gekauften Waren zu speichern, einschließlich Bestellnummer, Produktnummer, Kaufmenge, Kaufpreis und Kaufbetrag. Wenn wir Detaildaten einer Bestellung eingeben, löschen oder ändern, ändern sich die Daten in der Detailtabelle der Bestellung. Zu diesem Zeitpunkt müssen die Gesamtmenge und der Gesamtbetrag in der Kopftabelle der Bestellung neu berechnet werden. Andernfalls stimmen die Gesamtmenge und der Gesamtbetrag in der Kopftabelle der Bestellung nicht mit der Gesamtmenge in der Tabelle mit den Bestelldetails überein. Berechnung und Betrag werden addiert, hierin liegt die Inkonsistenz der Daten. Um dieses Problem zu lösen, können wir Trigger verwenden, um automatisch zwei Schritte auszulösen, wenn in der Tabelle mit den Bestelldetails Daten eingefügt, geändert oder gelöscht werden: 1) Berechnen Sie die Gesamtmenge und den Gesamtbetrag in der Tabelle mit den Bestelldetails neu. 2) Verwenden Sie die im ersten Schritt berechneten Werte, um die Gesamtmenge und den Gesamtbetrag in der Kopftabelle der Bestellung zu aktualisieren. Auf diese Weise stimmen die Werte für Gesamtmenge und Gesamtbetrag in der Kopftabelle der Bestellung immer mit den in der Tabelle mit den Bestelldetails berechneten Werten für Gesamtmenge und Gesamtbetrag überein, und die Daten sind konsistent und widersprechen sich nicht. ② Trigger können uns dabei helfen, Betriebsprotokolle aufzuzeichnen. Mithilfe von Triggern können Sie genau aufzeichnen, was wann passiert ist. Ein gutes Beispiel ist beispielsweise die Aufzeichnung des Auslösers für die Änderung des Mitgliedseinzahlungsbetrags. Dies ist für uns sehr hilfreich, um das spezifische Szenario wiederherzustellen, als der Vorgang ausgeführt wurde, und die Ursache des Problems besser zu lokalisieren. ③ Trigger können auch verwendet werden, um die Legitimität von Daten zu überprüfen, bevor sie verarbeitet werden. Wenn beispielsweise ein Supermarkt Waren einkauft, ist der Lagerleiter verpflichtet, den Einkaufspreis einzugeben. Bei der menschlichen Arbeit können jedoch leicht Fehler passieren. Beispielsweise wird bei der Eingabe der Menge der Barcode eingescannt. Bei der Eingabe des Betrags wird die Zeile falsch gelesen und der eingegebene Preis ist viel höher als der Verkaufspreis, was zu enormen Verlusten in den Büchern führt. Dies kann durch Trigger geschehen, Oder prüfen Sie vor dem Update-Vorgang die entsprechenden Daten und melden Sie Fehler rechtzeitig, um zu verhindern, dass fehlerhafte Daten in das System gelangen. 4.2 Nachteile①Das größte Problem bei Triggern ist die schlechte Lesbarkeit. Da Trigger in der Datenbank gespeichert und ereignisgesteuert sind, bedeutet dies, dass Trigger möglicherweise nicht von der Anwendungsschicht gesteuert werden. Dies stellt eine große Herausforderung für die Systemwartung dar. Erstellen Sie beispielsweise einen Auslöser, um den Einzahlungsvorgang des Mitglieds zu ändern. Wenn bei der Operation im Trigger ein Problem auftritt, schlägt die Aktualisierung des gespeicherten Mitgliedswerts fehl. Ich benutze Der folgende Code demonstriert dies: mysql> aktualisiere demo.membermaster, setze memberdeposit=20, wobei memberid = 2; FEHLER 1054 (42S22): Unbekannte Spalte „aa“ in „Feldliste“ Das Ergebnis zeigt, dass das System einen Fehler ausgibt und das Feld „aa“ nicht existiert. Dies liegt daran, dass der Dateneinfügevorgang im Trigger ein zusätzliches Feld hat und das System einen Fehler ausgibt. Wenn Sie diesen Auslöser jedoch nicht verstehen, denken Sie möglicherweise, dass ein Problem mit der Aktualisierungsanweisung selbst oder mit der Struktur der Mitgliedsinformationstabelle vorliegt. Vielleicht gibst du Ich habe versucht, dieses Problem zu lösen, indem ich der Mitgliedsinformationstabelle ein Feld namens „aa“ hinzugefügt habe, aber das war reine Zeitverschwendung. ②Änderungen an zugehörigen Daten können Triggerfehler verursachen. Insbesondere Änderungen in der Datentabellenstruktur können Triggerfehler verursachen und dadurch den normalen Ablauf von Datenoperationen beeinträchtigen. Diese beeinträchtigen die Effizienz der Fehlerbehebung bei den Fehlerursachen in der Anwendung aufgrund der verborgenen Natur der Auslöser selbst. 4.3 HinweiseBeachten Sie: Wenn in der untergeordneten Tabelle eine Fremdschlüsseleinschränkung definiert ist und der Fremdschlüssel die Klausel ON UPDATE/DELETE CASCADE/SET NULL angibt, führt das Ändern des referenzierten Schlüsselwerts der übergeordneten Tabelle oder das Löschen der referenzierten Datensatzzeile der übergeordneten Tabelle auch zu Änderungs- und Löschvorgängen in der untergeordneten Tabelle. Der durch die Anweisung definierte Trigger wird nicht aktiviert. Dies ist das Ende dieses Artikels über die Verwendung und die Vor- und Nachteile von MySQL-Triggern. Weitere relevante MySQL-Trigger-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Vergleich von div und span in HTML_PowerNode Java Academy
>>: Sehr detaillierte JavaScript-Implementierung eines Webseiten-Karussells
Im vorherigen Artikel haben wir nach der Konfigur...
1. Grundlegende Syntaxstruktur der HTML-Senden- u...
Inhaltsverzeichnis Vorwort Optionale Verkettung N...
Installationseinführung unter Windows: Schauen Si...
Formularelemente dynamisch hinzufügen Das dynamis...
<br />Test zu Webdesign und -produktion, Tei...
In diesem Artikelbeispiel wird der spezifische Ja...
Unter den klassischen Farbkombinationen kann wohl...
Inhaltsverzeichnis Bereitstellung auf einem einze...
Bei der Installation von Puppeteer unter Linux kö...
Geschichte der HTML-Entwicklung: HTML steht im En...
01. Befehlsübersicht Basisname - entfernt Verzeic...
In diesem Artikelbeispiel wird der spezifische Co...
Kerncode -- Im Folgenden werde ich die Implementi...
Professionelles Webdesign ist komplex und zeitint...