MySQL spouští nebo spouští - Definování událostí a okamžiků

Obsah
Příkaz, který vytváří spoušť, je
CREATE TRIGGER trigger_name čas události v tabulce NA KAŽDÉM ŘADĚ

Okamžik
Může to být PO nebo PŘED, tj. Po nebo před událostí sql, jako je vytvoření záznamu, odstranění, výběr, vyhledávání, úprava atd.
událost
Jakékoli z operací sql nazýváme událost, může to být INSERT, UPDATE nebo DELETE. Výběry nelze provádět ze spouštěčů (Vyberte * z …), tato operace se provádí z uložených procedur, nikoli ze spouštěčů.
Obecné příkazy a příkazy ke správě spouštěčů nebo spouštěčů
Vytváříme spouštěč auditu v prodejích automobilové agentury, pokaždé, když operátor nebo prodejce upraví údaje o klientovi, automaticky v tabulce audits_cliente uvedeme datum a čas, kdo provedl změnu a kdo je klient to bylo upraveno
 VYTVOŘIT SPUŠTĚNÍ client_audit_trigger PO AKTUALIZACI NA klientech PRO KAŽDOU ŘADU VLOŽTE DO client_audit (clientid, modified_by, date) HODNOTY (OLD.clientid, NEW.idoperator, NOW ()) 

Dotaz na všechny spouštěče dostupné v databázi
Zobrazit spouštěče

V tomto případě ten, který vytvoříme klientský audit a uvidíme jeho funkce v různých sloupcích, událost aktualizace v tabulce klientů, která provede vložení a jeho administrátor je root
Odstranit spouštěč z databáze
Spouštěcí jméno DROP TRIGGER

Jak volat uložené procedury ve spouštěči
Analyzujeme příklad databáze produktů a to, že při generování prodeje musí prodejce generovat také provizi, kterou vydělá, poté musí být provize za prodej aktualizována po vložení nebo generování nového prodeje nebo to může být také po generování faktury , v závislosti na obchodním modelu, který má být vyvinut, ale stačí, aby byl příklad pochopen.
Vytvoříme uloženou proceduru, která vypočítá provizi na základě množství prodaného produktu.
 DELIMITER $$ VYTVOŘIT POSTUP pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN množství INT) ZAČÍT VYHLÁSIT totalcommission INT DEFAULT 0; Vyberte provizi z produktů, kde productid = p_productid; totalcommission = provize * p_amount vložte do provizí (prodejce, provize) hodnoty (sellid, productid, provize, totalcommission); KONEC $$ DELIMITER $$ 

Nyní vytvoříme nový spouštěč prodeje. Tento spouštěč bude spuštěn po vložení prodeje a převzetí údajů o tomto nebo podrobnostech prodeje.
 VYTVOŘIT SPOUŠTĚČ nový prodej PO VLOŽENÍ do prodejů PRO KAŽDOU ŘADU ZAČÍT VOLAT pa_commissions (new.id prodejce, new.idproduct, new.quantity); KONEC $$ 

Vidíme, že uložená procedura je volána tak, aby mohla konzultovat produktová data, provizi, a tak mohla automaticky vypočítat výši provize.
Mohli bychom to také zkomplikovat a umožnit zjistit, zda provize a prodej již existují, poté je upravit a nevkládat znovu.
K tomu bychom měli také rozpoznat prodejní nebo fakturační číslo, pak hledáme, zda produkt již existuje v prodejním a prodejním čísle, to znamená, že již existuje a byl uveden do provozu, proto jej upravíme a nevložíme jako nový prodej.
 vyberte počet (productid)> 0 do již existuje z provizí, kde sellid = sellid a salesid = salesid; pokud již existuje, pak UPDATE provize nastavená provize = totalcommission kde sellid = sellid a salesid = salesid; jinak vložte do provizí (prodejce, provize) hodnoty (prodejce, produkt, provize, celková provize); konec pokud; 
Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave