Sadržaj
Izjava koja stvara okidač jeCREATE TRIGGER time_name vrijeme događaja na tablici NA SVAKOM REDU
Trenutak
To može biti NAKON ili PRIJE, odnosno nakon ili prije nego što se dogodi sql događaj, poput stvaranja zapisa, brisanja, odabira, pretraživanja, mijenjanja itd.
Događaj
Bilo koju od sql operacija nazivamo događajem, može biti INSERT, UPDATE ili DELETE. Odabiri se ne mogu izvršiti iz okidača (Odaberite * od …) ova se operacija izvodi iz pohranjenih procedura, a ne iz okidača.
Opće izjave i naredbe za upravljanje okidačima ili okidačima
Mi stvaramo okidač za reviziju prodaje agencije za automobile, svaki put kad operater ili prodavatelj promijeni podatke o klijentu, automatski ćemo u tablici audits_cliente navesti datum i vrijeme, tko je izvršio promjenu, a koji je klijent to je izmijenjeno
CREATE TRIGGER client_audit_trigger NAKON AŽURIRANJA KLIJENTA ZA SVAKI RED UMETNI INTO client_audit (clientid, modified_by, date) VRIJEDNOSTI (OLD.clientid, NEW.idoperator, NOW ())Upitajte sve okidače dostupne u bazi podataka
Prikaži okidačeU ovom slučaju, onaj koji stvaramo revizijom klijenta i vidimo njegovu funkcionalnost u različitim stupcima, događaj ažuriranja u tablici klijenata koji će izvršiti umetanje, a njegov administrator administrator je root
Izbrišite okidač iz baze podataka
DROP TRIGGER okidač
Kako pozvati pohranjene procedure u okidaču
Analizirat ćemo primjer baze podataka o proizvodima i da prilikom generiranja prodaje prodavač mora generirati i proviziju koju zarađuje, tada se provizija po prodaji mora ažurirati nakon umetanja ili generiranja nove prodaje ili bi to moglo biti i nakon generiranja računa , ovisno o poslovnom modelu koji će se razviti, ali dovoljno je da se primjer razumije.
Izrađujemo pohranjeni postupak koji će izračunati proviziju na temelju količine prodanog proizvoda.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN količina INT) POČNITE PROGLASITI totalcommission INT Zadano 0; Odaberite proviziju od proizvoda gdje je productid = p_productid; ukupna provizija = provizija * p_iznos umetnite u vrijednosti provizija (prodavatelj, provizija) (prodajna cijena, produkcija, provizija, ukupna provizija); KRAJ $$ DELIMITER $$
Sada stvaramo novi okidač za prodaju. Ovaj okidač će se izvršiti nakon umetanja prodaje i uzimanja podataka o ovom ili pojedinostima prodaje.
CREATE TRIGGER nova prodaja NAKON UMETKA o prodaji ZA SVAKI RED POČNITE POZIVATI pa_commissions (new.id prodavatelj, new.idproduct, new.quantity); KRAJ $$
Možemo vidjeti da je pohranjena procedura pozvana da može pregledati podatke o proizvodu, proviziju i na taj način moći automatski izračunati iznos provizije.
Također bismo mogli učiniti kompleksnijim dopuštajući da znamo postoje li provizija i prodaja, a zatim ih izmijeniti i ne umetati ponovno.
Za to bismo također trebali prepoznati broj prodaje ili fakture, zatim tražimo postoji li proizvod već u prodajnom i prodajnom broju, to znači da već postoji i da je naručen, stoga ćemo izmijeniti, a ne umetnuti kao novu prodaju.
odaberite count (productid)> 0 u već postoji od provizija gdje je sellerid = sellerid i salesid = salesid; ako već postoji, UPDATE provizije postavljaju proviziju = ukupnu proviziju gdje je sellerid = sellerid i salesid = salesid; else umetnuti u provizije (prodavatelj, provizija) vrijednosti (sellerid, productid, Commission, totalcommission); završi ako;Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod