„MySQL“ paleidikliai arba paleidiklis - įvykių ir momentų apibrėžimas

Turinys
Teiginį sukuriantis teiginys yra
CREATE TRIGGER trigger_name įvykio laikas LENTELĖJE kiekvienoje eilutėje

Momentas
Tai gali būti po arba prieš, tai yra, po ar prieš įvykstant SQL įvykiui, pavyzdžiui, įrašo kūrimui, ištrynimui, pasirinkimui, paieškai, modifikavimui ir kt.
Įvykis
Mes vadiname bet kurią „SQL“ operaciją įvykiu, tai gali būti INSERT, UPDATE arba DELETE. Negalima pasirinkti iš trigerių (Pasirinkite * iš…), ši operacija atliekama naudojant išsaugotas procedūras, o ne iš trigerių.
Bendrieji teiginiai ir komandos valdikliams ar trigeriams valdyti
Mes sukuriame auditą automobilių agentūros pardavimuose, kiekvieną kartą, kai operatorius ar pardavėjas keičia kliento duomenis, automatiškai audits_cliente lentelėje nurodysime datą ir laiką, kas padarė pakeitimą ir kas yra klientas kad buvo modifikuotas
 KURTI TRIGGERĮ client_audit_trigger PO ATNAUJINIMO Į KLIENTUS KIEKVIENAI EILEI Įterpti į kliento_auditą (clientid, modifikuotas iki, data) VERTĖS (OLD.clientid, NEW.idoperator, NOW ()) 

Užklausti visus duomenų bazėje esančius aktyviklius
Rodyti aktyviklius

Šiuo atveju tas, kurį sukuriame kliento auditą ir matome jo funkcijas skirtinguose stulpeliuose, atnaujinimo įvykis klientų lentelėje, kuris padarys įterpimą, o jo administratorius yra root
Ištrinkite aktyviklį iš duomenų bazės
DROP TRIGGER trigerio pavadinimas

Kaip iškviesti saugomas procedūras trigeryje
Mes išanalizuosime produktų duomenų bazės pavyzdį ir tai, kad generuodamas pardavimą pardavėjas taip pat turi generuoti uždirbtą komisinį mokestį, tada komisinis mokestis už pardavimą turi būti atnaujintas įterpus ar sukūrus naują pardavimą arba taip pat gali būti sugeneruotas sąskaitą faktūrą , priklausomai nuo plėtojamo verslo modelio, tačiau to pakanka, kad pavyzdys būtų suprastas.
Mes sukuriame saugomą procedūrą, kuri apskaičiuos komisinį atlyginimą pagal parduoto produkto kiekį.
 DELIMITER $$ KURTI PROCEDŪRĄ pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN kiekis INT) PRADĖTI DEKLARUOTI totalcommission INT DEFAULT 0; Pasirinkite komisinius iš produktų, kur productid = p_productid; totalcommission = komisinis mokestis * p_amount įterpti į komisinių (pardavėjo, komisinių) vertes (sellerid, productid, Commission, totalcommission); END $$ DELIMITER $$ 

Dabar sukuriame naują pardavimo aktyviklį. Šis aktyviklis bus įvykdytas įterpus pardavimą ir gavus šios ar pardavimo informacijos duomenis.
 CREATE TRIGGER new sale AFTER INSERT on sales FOR KAS KURIŲ EILIŲ PRADĖTI SKAMBINIMĄ pa_commissions (new.id pardavėjas, new.idproduct, new.quantity); PABAIGA $ $ 

Matome, kad išsaugota procedūra yra kviečiama susipažinti su produkto duomenimis, komisiniu mokesčiu ir taip automatiškai apskaičiuoti komisinius.
Taip pat galėtume padaryti ją sudėtingesnę, leisdami sužinoti, ar komisinis mokestis ir išpardavimas jau egzistuoja, tada pakeiskite jį ir daugiau jo neįterpkite.
Tam taip pat turėtume atpažinti pardavimo ar sąskaitos faktūros numerį, tada ieškome, ar produktas jau yra pardavimo ir pardavėjo numeryje, tai reiškia, kad jis jau egzistuoja ir buvo užsakytas, todėl pakeisime ir neįterpsime kaip naujo pardavimo.
 pasirinkite count (productid)> 0 į jau yra iš komisinių, kur sellerid = sellerid ir salesid = salesid; jei jis jau egzistuoja, tada UPDATE komisiniai nustato komisinius = totalcommission, kur sellerid = sellerid ir salesid = salesid; kitaip įterpkite į komisinius (pardavėjo, komisinių) vertes (sellerid, productid, Commission, totalcommission); baigti, jei; 
Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave