auslösen: Trigger-Verwendungsszenarien und entsprechende Versionen:Der Trigger kann mit folgenden MySQL-Versionen verwendet werden:
Beispielhafte Anwendungsszenarien:
Das heißt: Wird automatisch verarbeitet, wenn eine Tabelle geändert wird. Wenn der Triggerfehler „Es ist nicht zulässig, einen Ergebnissatz von einem Trigger zurückzugeben“ auftritt, scrollen Sie für weitere Details bitte bis zum Ende. Verwendung von Triggern:Erstellen Sie einen einfachen Auslöser: Erstellen Sie einen Trigger für neues Produkt nach dem Einfügen für Produkte für jede Zeile. BEGINNEN DECLARE msg VARCHAR(100); SET msg = "Produkte hinzugefügt"; SIGNAL SQLSTATE 'HY000' SET Nachrichtentext = Nachricht; ENDE Ergebnis:
erklären: Erstellen Sie zuerst einen Trigger: #newproduct Der Name des Triggers CREATE TRIGGER newproduct Auslösezeitpunkt: VORHER: Trigger werden vor der Anweisung ausgelöst, die sie ausgelöst hat. NACHHER: Trigger werden ausgelöst, nachdem die Anweisung, die sie ausgelöst hat, abgeschlossen ist. Hier verwenden wir „after“, d. h. die Auslösebedingung tritt ein, nachdem die Einfügung abgeschlossen ist. DECLARE msg VARCHAR(100); Hinweis: Die „declare“-Anweisung ist eine Anweisung zum Deklarieren von Variablen in einer zusammengesetzten Anweisung. Wenn „msg“ nicht deklariert ist, meldet MySQL beim Ausführen der Anweisung einen Fehler. SIGNAL SQLSTATE 'HY000' SET Nachrichtentext = Nachricht; Wenn die SIGNAL-Anweisung einen bestimmten SQLSTATE-Wert angibt, wird dieser Wert verwendet, um die angegebene Bedingung darzustellen. „HY000“ wird als „allgemeiner Fehler“ bezeichnet: Tritt im Kommando ein allgemeiner Fehler auf, wird die Meldung in der Folgemeldung ausgelöst; Hinweis: Diese Aussage spiegelt nur mein persönliches Verständnis wider und ich habe nur ein begrenztes Verständnis davon. Wenn Sie eine bessere Erklärung haben, hinterlassen Sie bitte eine Nachricht. Die Auslösebedingung beginnt mit BEGIN und endet mit END. Auslösendes Ereignis:
So löschen Sie einen Trigger:- Löschen Sie den Auslöser DROP TRIGGER newproduct; INSERT-Trigger:Der Insert-Trigger wird vor oder nach der Ausführung der Insert-Anweisung ausgeführt. Dabei sind folgende Punkte zu beachten:
Beispiel: Beim Einfügen einer neuen Bestellung eine neue Bestellnummer generieren und unter order_num speichern CREATE TRIGGER neworder AFTER INSERT ON Aufträge für JEDE REIHE Wählen Sie NEW.order_num in @ee; einfügen INTO orders(order_date,cust_id) VALUES(NOW(),10001); WÄHLEN Sie @ee als Nummer; TRIGGER-Neuauftrag löschen; erklären: Erstellen Sie einen Neworder-Trigger, der nach dem Einfügen und für jede eingefügte Zeile ausgeführt wird. Beim Einfügen gibt es eine virtuelle Tabelle, die genau mit der durch NEW dargestellten Orders-Tabelle identisch ist. Wählen Sie NEW.order_num in @a; Suchen Sie die Anzahl der Daten, die wir in die virtuelle Tabelle eingefügt haben, und speichern Sie die Nummer in der Variablen „a“. Erkennung: einfügen INTO orders(order_date,cust_id) VALUES(NOW(),10001); WÄHLEN Sie @ee als Nummer; Daten einfügen und die Nummer der eingefügten Daten ausgeben löschen: TRIGGER-Neuauftrag löschen; Löschen Sie den Auslöser. Beispiel 2: Erstellen Sie einen Trigger für die Tabelle COURSE, um beim Einfügen zu prüfen, ob Datensätze mit demselben Kursnamen vorhanden sind. Wenn dies der Fall ist, wird keine Aktion ausgeführt. TRIGGER ERSTELLEN trg_course_in VOR EINFÜGEN AUF Kurs FÜR JEDE REIHE BEGINNEN DECLARE msg VARCHAR(100); WENN EXISTIERT (SELECT * FROM natürlich wo cname=NEW.cname) DANN SET msg = 'Ein Kurs mit demselben Namen kann nicht eingegeben werden'; SIGNAL SQLSTATE 'HY000' SET Nachrichtentext = Nachricht; ENDE, WENN; ENDE Beispiel 3: Achten Sie beim Einfügen von Informationen in die Studententabelle darauf, dass der Wert von ssex „männlich“ oder „weiblich“ sein muss. Erstellen Sie den Trigger trg_ssex nach dem Einfügen für den Studenten für jede Zeile BEGINNEN DECLARE msg VARCHAR(100); WENN(NEW.ssex nicht in('男','女')) DANN SET msg = „Das Geschlecht muss männlich oder weiblich sein“; SIGNAL SQLSTATE 'HY000' SET Nachrichtentext = Nachricht; ENDE, WENN ENDE UPDATE-Trigger:
Beispiel 1: Stellen Sie sicher, dass die Abkürzung des Staates groß geschrieben wird Erstellen Sie einen Trigger für Update-Anbieter vor dem Update für Anbieter. FÜR JEDE ZEILE SET new.vend_state =UPPER(new.vend_state); UPDATE-Anbieter SET vend_state='hw', wobei vend_id='1001'; DROP TRIGGER UPDATE-Anbieter; Hinweis: upper: wandelt den Text in Großbuchstaben um: Beispiel 2: Es ist nicht zulässig, die Studenten-ID SNO in der Studententabelle zu ändern. Wenn diese Spalte geändert wird, wird eine Fehlermeldung angezeigt und der Vorgang wird abgebrochen. TRIGGER trg_student_updateSno VOR DEM UPDATE ERSTELLEN FÜR JEDE REIHE BEGINNEN DECLARE msg VARCHAR (100); WENN NEU.sno <> ALT.sno DANN SET msg = „Die Änderung von sno ist nicht zulässig“; SIGNAL SQLSTATE 'HY000' SET Nachrichtentext = Nachricht; ENDE, WENN; ENDE DELETE-Trigger:Ein DELETE-Trigger wird vor oder nach der Ausführung der Delete-Anweisung ausgeführt:
Beispiel: Verwenden Sie „old“, um die zu löschenden Zeilen in einer Archivtabelle zu speichern. Erstellen Sie zunächst eine Tabelle ähnlich den Bestellungen: Tabelle „Archive_Bestellungen“ erstellen wie Bestellungen; -- Erstellen Sie einen Löschtrigger CREATE TRIGGER deleteorder BEFORE DELETE für Bestellungen für JEDE REIHE BEGIN INSERT INTO archive_orders(Bestellnummer,Bestelldatum,Kunden-ID) VALUES(alte.Bestellnummer,altes.Bestelldatum,alte.Kunden-ID); ENDE erklären: Wenn Sie Informationen in einer Zeile der Auftragstabelle löschen, speichern Sie die gelöschten Informationen in archive_orders. Löschen Sie eine Zeile aus der Originaltabelle: LÖSCHEN AUS Bestellungen, WO Bestellnummer = '20014'; Sehen Sie die Wirkung: AUSWÄHLEN * AUS Archivbestellungen; Beenden:Hinweis: Wenn Sie auf einen Triggerfehler stoßen: „Es ist nicht zulässig, einen Ergebnissatz von einem Trigger zurückzugeben“
Ausführliche Erklärung: https://www.programmersought.com/article/3237975256/ Benutzervariablen erstellen: https://www.jb51.net/article/201843.htm Damit ist dieser Artikel über die Verwendungsszenarien und -methoden von MySQL-Triggern abgeschlossen. Weitere Informationen zur Verwendung von MySQL-Triggern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: HTML ist eigentlich die Anwendung zum Erlernen mehrerer wichtiger Tags
>>: Docker führt einen Befehl in einem Container außerhalb des Containers aus
Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...
Inhaltsverzeichnis 1. JavaScript-Probleme 2. Vort...
Inhaltsverzeichnis 1. Nach dem Download entpacken...
1. Vorbereitung des Installationspakets VMware-pl...
Offizielle Website https://cli.vuejs.org/en/guide...
Inhaltsverzeichnis Webkomponenten benutzerdefinie...
Ich bin vor Kurzem auf ein Problem gestoßen, als ...
Grundlegende Syntax Sie können eine Ansicht mit d...
Leistung von „Union All“ in MySQL 5.6 Teil 1: MyS...
MySQL verfügt über die folgenden Protokolle: Fehl...
Navigation, kleine Datenmenge Tabelle, zentriert &...
In diesem Artikelbeispiel wird der spezifische Co...
Tatsächlich gibt es viele entsprechende Schreibme...
Lassen Sie mich zunächst vorstellen, wie Sie PHP ...
Effektive Lösung für Ubuntu, wenn in einer virtue...