Inhaltsverzeichnis
Die Anweisung, die einen Trigger erzeugt, istCREATE TRIGGER trigger_name Ereigniszeit ON table ON EACH ROW
Moment
Es kann NACH oder VOR sein, d. h. nach oder vor einem SQL-Ereignis, z. B. beim Erstellen eines Datensatzes, Löschen, Auswählen, Suchen, Ändern usw.
Veranstaltung
Wir nennen jede der SQL-Operationen ein Ereignis, es kann INSERT, UPDATE oder DELETE sein. Aus Triggern kann keine Auswahl getroffen werden (Select * from…). Dieser Vorgang wird von gespeicherten Prozeduren und nicht von Triggern ausgeführt.
Allgemeine Anweisungen und Befehle zum Verwalten von Triggern oder Triggern
Wir erstellen einen Auslöser für ein Audit im Verkauf einer Autoagentur. Jedes Mal, wenn ein Betreiber oder Verkäufer die Daten eines Kunden ändert, geben wir automatisch in einer Tabelle von audits_cliente Datum und Uhrzeit an, wer die Änderung vorgenommen hat und wer der Kunde ist das wurde geändert
CREATE TRIGGER client_audit_trigger NACH UPDATE AUF Clients FÜR JEDE ZEILE EINFÜGEN IN client_audit (clientid, geändert_by, date) VALUES (OLD.clientid, NEW.idoperator, NOW ())Alle in der Datenbank verfügbaren Trigger abfragen
Auslöser anzeigenIn diesem Fall erstellen wir ein Client-Audit und sehen seine Funktionalität in verschiedenen Spalten, ein Aktualisierungsereignis in der Clients-Tabelle, das eine Einfügung vornimmt und sein Administratorbenutzer ist root
Einen Trigger aus der Datenbank löschen
DROP TRIGGER Triggername
So rufen Sie gespeicherte Prozeduren in einem Trigger auf
Wir analysieren ein Beispiel für eine Produktdatenbank und dass ein Verkäufer beim Generieren eines Verkaufs auch die Provision generieren muss, die er verdient, dann muss die Provision pro Verkauf nach dem Einfügen oder Generieren des neuen Verkaufs aktualisiert werden oder dies könnte auch nach der Erstellung einer Rechnung sein , je nach zu entwickelndem Geschäftsmodell, reicht aber aus, um das Beispiel zu verstehen.
Wir erstellen eine gespeicherte Prozedur, die die Provision basierend auf der Menge eines verkauften Produkts berechnet.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_Lieferanten-ID INT, IN p_Produkt-ID INT, IN Menge INT) BEGIN DECLARE totalcommission INT DEFAULT 0; Kommission aus Produkten auswählen, wobei productid = p_productid; totalcommission = Provision * p_amount in Provisionen (Verkäufer, Provision) Werte (Verkäuferid, Produktid, Provision, Gesamtkommission) einfügen; ENDE $$ DELIMITER $$
Jetzt erstellen wir den neuen Verkaufstrigger. Dieser Trigger wird ausgeführt, nachdem ein Verkauf eingefügt und die Daten dieses oder des Verkaufsdetails übernommen wurden.
CREATE TRIGGER new sale AFTER INSERT on sales FOR JED ROW BEGIN CALL pa_commissions (new.id seller, new.idproduct, new.quantity); ENDE $$
Wir sehen, dass die gespeicherte Prozedur aufgerufen wird, um die Produktdaten, die Provision einsehen und damit die Provisionshöhe automatisch berechnen zu können.
Wir könnten es auch komplexer machen, indem wir wissen, ob die Provision und der Verkauf bereits vorhanden sind, sie dann ändern und nicht erneut einfügen.
Dazu sollten wir auch die Verkaufs- oder Rechnungsnummer erkennen, dann suchen wir, ob das Produkt bereits in der Verkaufs- und Verkäufernummer existiert, dies impliziert, dass es bereits existiert und beauftragt wurde, daher werden wir modifizieren und nicht als Neuverkauf einfügen.
select count (productid)> 0 into besteht bereits aus Provisionen wobei Sellerid = Sellerid und salesid = salesid; wenn es bereits existiert, dann UPDATE-Provisionen set Provision = Gesamtprovision wobei Sellerid = Sellerid und Salesid = Salesid; sonst in Provisionen (Verkäufer, Provision) Werte (Verkäuferid, Produktid, Provision, Gesamtprovision) einfügen; Ende, wenn;Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben