Indholdsfortegnelse
Den erklæring, der skaber en trigger, erOpret TRIGGER trigger_name hændelsestid PÅ tabellen I HVER Række
Øjeblik
Det kan være EFTER eller FØR, det vil sige efter eller før der opstår en sql -begivenhed, såsom at oprette en post, slette, vælge, søge, ændre osv.
Begivenhed
Vi kalder enhver af SQL -operationerne en begivenhed, det kan være INSERT, UPDATE eller DELETE. Valg kan ikke foretages fra udløsere (Vælg * fra …) denne handling udføres fra lagrede procedurer og ikke fra udløsere.
Generelle udsagn og kommandoer til at styre udløsere eller udløsere
Vi opretter en trigger til en revision i salget af et bilbureau, hver gang en operatør eller sælger ændrer dataene fra en klient, vil vi automatisk i en tabel med audits_cliente angive dato og klokkeslæt, hvem der foretog ændringen, og som er klienten der blev ændret
OPRET TRIGGER client_audit_trigger EFTER OPDATERING PÅ klienter FOR HVER RÆKKEINSERT I Client_audit (clientid, modified_by, date) VÆRDIER (OLD.clientid, NEW.idoperator, NU ())Forespørg alle de udløsere, der er tilgængelige i databasen
Vis udløsereI dette tilfælde er det den, vi opretter klientrevision og ser dens funktionalitet i forskellige kolonner, en opdateringshændelse i klienttabellen, der foretager en indsættelse, og dens administratorbruger er root
Slet en trigger fra databasen
DROP TRIGGER udløsernavn
Sådan kaldes lagrede procedurer i en trigger
Vi vil analysere et eksempel på en produktdatabase, og at en sælger ved generering af et salg også skal generere den provision, han tjener, så skal provisionen pr. Salg opdateres efter indsættelse eller generering af det nye salg, eller det kan også være efter generering af en faktura afhængigt af den forretningsmodel, der skal udvikles, men det er nok til, at eksemplet forstås.
Vi opretter en lagret procedure, der beregner provision baseret på mængden af et solgt produkt.
DELIMITER $$ OPRET PROCEDURE pa_commission` (I p_vendor ID INT, IN p_product ID INT, I mængde INT) BEGIN DECLARE totalcommission INT DEFAULT 0; Vælg provision fra produkter, hvor productid = p_productid; totalcommission = provision * p_amount indsættes i kommissionsværdier (sælger, provision) værdier (sellerid, productid, provision, totalcommission); SLUT $$ DELIMITER $$
Nu opretter vi den nye salgstrigger. Denne udløser vil blive udført efter at have indsat et salg og taget dataene fra denne eller salgsdetaljen.
Opret TRIGGER nyt salg EFTER INDLÆG om salg FOR HVER RÆK BEGYNDER OPKALD pa_commissions (new.id sælger, new.idproduct, new.quantity); END $$
Vi kan se, at den lagrede procedure kaldes for at kunne konsultere produktdata, provision og dermed automatisk kunne beregne kommissionsbeløbet.
Vi kunne også gøre det mere komplekst, så vi kunne vide, om provisionen og salget allerede findes, derefter ændre det og ikke indsætte det igen.
Til dette skulle vi også genkende salgs- eller fakturanummeret, så leder vi efter, om produktet allerede findes i salgs- og sælgernummeret, det indebærer, at det allerede findes og blev bestilt, derfor vil vi ændre og ikke indsætte som et nyt salg.
vælg count (productid)> 0 i eksisterer allerede fra kommissioner, hvor sellerid = sellerid og salesid = salesid; hvis den allerede findes, UPDATE kommissioner sætter provision = totalkommission, hvor sellerid = sellerid og salesid = salesid; ellers indsættes i kommissionsværdier (sælger, kommission) værdier (sælgerid, produktid, provision, totalkommission); Afslut Hvis;Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt