CREATE TRIGGER name_trigger moment event ON table ON JEDE REIHE
Moment
Dies kann NACH oder VOR dem Auftreten eines SQL-Ereignisses erfolgen, z. B. Erstellen eines Datensatzes, Löschen, Auswählen, Suchen, Ändern usw.
Ereignis
Wir rufen event für jede der Operationen auf. SQL kann INSERT, UPDATE oder DELETE sein. Da die Trigger nicht ausgewählt werden können (Select * from …), wird dieser Vorgang von gespeicherten Prozeduren und nicht von Triggern ausgeführt.
Sätze und allgemeine Befehle zum Verwalten von Triggern oder Triggern
Wir erstellen einen Auslöser für das Verkaufsaudit einer Autovermittlung. Jedes Mal, wenn ein Betreiber oder Verkäufer die Daten eines Kunden ändert, geben wir in einer Tabelle von audits_client automatisch das Datum und die Uhrzeit an, wer die Änderung vorgenommen hat und wer der Kunde war modifiziert
CREATE TRIGGER trigger_auditoria_clients NACH UPDATE ON-Clients FÜR JEDE REIHE INSERT INTO customer_assessment (customer_id, modified_by, date) WERTE (OLD.idcliente, NEW.idoperador, NOW ())
Konsultieren Sie alle verfügbaren Trigger in der Datenbank
Trigger anzeigen
In diesem Fall erstellen wir Überwachungsclients und sehen in verschiedenen Spalten deren Funktionalität, ein Aktualisierungsereignis in der Clients-Tabelle, das eine Einfügung vornimmt und dessen Administrator-Benutzer root ist
Löschen Sie einen Trigger aus der Datenbank
DROP TRIGGER nombretrigger
Aufrufen gespeicherter Prozeduren in einem Trigger
Wir werden ein Beispiel für eine Produktdatenbank analysieren. Wenn ein Verkäufer einen Verkauf generiert, muss er auch die Provision generieren, die er verdient. Die Verkaufsprovision sollte dann nach dem Einfügen oder Generieren des neuen Verkaufs aktualisiert werden, oder sie könnte auch danach generiert werden Eine Rechnung, die dem zu entwickelnden Geschäftsmodell entspricht, aber ausreicht, um das Beispiel zu verstehen.
Wir erstellen eine gespeicherte Prozedur, die die Provision anhand der Menge eines verkauften Produkts berechnet.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_printer INT, IN p_product INT, IN INT Betrag) BEGINNEN DECLARE totalcomision INT DEFAULT 0; Wählen Sie eine Provision für Produkte aus, bei denen idproduct = p_idproduct; totalcomision = provisions * p_quantity Werte in Provisionen (Verkäufer, Provision) einfügen (idvendedor, idproducto, comision, totalcomision); ENDE $$ DELIMITER $$
Jetzt erstellen wir den neuen Trigger oder Trigger. Dieser Trigger wird ausgeführt, nachdem ein Verkauf eingefügt wurde und die Daten dieses oder des Verkaufsdetails erfasst wurden.
CREATE TRIGGER new sales NACH INSERT on sales FÜR JEDE REIHE BEGINNEN CALL pa_commissions (new.seller, new.idproduct, new.quantity); ENDE $$
Wir können sehen, dass die gespeicherte Prozedur aufgerufen wird, um die Produktdaten, die Provision und damit den Provisionsbetrag automatisch berechnen zu können.
Wir könnten es auch komplexer machen, indem wir Sie darüber informieren, ob die Provision und der Verkauf bereits vorhanden sind. Ändern Sie sie dann und fügen Sie sie nicht erneut ein.
Dazu sollten wir auch die Verkaufsnummer oder Rechnung erkennen, dann suchen wir, ob das Produkt bereits in der Verkaufs- und Verkaufsnummer existiert, implizieren, dass es bereits existiert und in Auftrag gegeben wird, deshalb werden wir es modifizieren und nicht als neuen Verkauf einfügen.
select count (idproduct)> 0 into ist bereits in Kommissionen vorhanden, in denen idvendedor = idvendedor und idventa = idventa; wenn es dann schon existiert UPDATE-Kommission setzt comision = totalcomisión wobei idvendedor = idvendedor und idventa = idventa; sonst Werte in Provisionen (Verkäufer, Provision) einfügen (idvendedor, idproducto, comision, totalcomision); ende wenn;