Satura rādītājs
Apgalvojums, kas rada sprūdu, irCREATE TRIGGER trigger_name notikuma laiks uz tabulas KATRĀ RĪVĀ
Mirklis
Tas var būt PĒC vai PIRMS, tas ir, pēc vai pirms SQL notikuma, piemēram, ieraksta izveides, dzēšanas, atlases, meklēšanas, modificēšanas utt.
Pasākums
Mēs saucam jebkuru no sql operācijām par notikumu, tas var būt INSERT, UPDATE vai DELETE. Izvēles nevar veikt no aktivizētājiem (Select * no…) šī darbība tiek veikta no saglabātajām procedūrām, nevis no trigeriem.
Vispārīgi paziņojumi un komandas, lai pārvaldītu aktivizētājus vai aktivizētājus
Mēs izveidojam revīzijas ierosinātāju automašīnu aģentūras pārdošanā, katru reizi, kad operators vai pārdevējs maina klienta datus, automātiski audits_cliente tabulā mēs norādīsim datumu un laiku, kurš veica izmaiņas un kurš ir klients kas tika modificēts
CREATE TRIGGER client_audit_trigger PĒC ATJAUNINĀŠANAS PAR KATRU RĪKU IEVIETOJIET klientu_auditā (clientid, modificēts_, datums) VĒRTĪBAS (OLD.clientid, NEW.idoperator, NOW ())Vaicājiet par visiem datubāzē pieejamajiem aktivizētājiem
Rādīt aktivizētājusŠajā gadījumā mēs izveidojam klienta auditu un redzam tā funkcionalitāti dažādās kolonnās, atjaunināšanas notikumu klientu tabulā, kas veiks ievietošanu un tā administratora lietotājs ir root
Izdzēsiet aktivizētāju no datu bāzes
DROP TRIGGER sprūda nosaukums
Kā aktivizētājā izsaukt saglabātās procedūras
Mēs analizēsim piemēru produktu datu bāzei un ka, veicot pārdošanu, pārdevējam ir jāveido arī viņa nopelnītā komisija, tad komisijas maksa par pārdošanu ir jāatjaunina pēc jaunas pārdošanas ievietošanas vai ģenerēšanas, vai arī tā var būt pēc rēķina ģenerēšanas , atkarībā no attīstāmā biznesa modeļa, bet ar to pietiek, lai piemērs tiktu saprasts.
Mēs izveidojam uzglabātu procedūru, kas aprēķinās komisijas maksu, pamatojoties uz pārdotā produkta daudzumu.
DELIMITER $$ IZVEIDOT PROCEDŪRU pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN daudzums INT) SĀKT DEKLARĒT totālo komisiju INT DEFAULT 0; Izvēlieties komisiju no produktiem, kur productid = p_productid; totalcommission = komisija * p_summa ievietot komisijas (pārdevēja, komisijas) vērtībās (sellerid, productid, Commission, totalcommission); END $$ DELIMITER $$
Tagad mēs izveidojam jaunu pārdošanas aktivizētāju. Šis aktivizētājs tiks izpildīts pēc pārdošanas ievietošanas un šīs vai pārdošanas detaļas datu iegūšanas.
IZVEIDOT TRIGGER jaunu izpārdošanu PĒC IEVIETOJUMA par pārdošanu KATRĀ RĪCĀ SĀKT ZVANU pa_commissions (new.id pārdevējs, new.idproduct, new.quantity); END $$
Mēs redzam, ka uzglabātā procedūra tiek izsaukta, lai varētu iepazīties ar produkta datiem, komisiju un tādējādi automātiski aprēķināt komisijas summu.
Mēs varētu arī padarīt to sarežģītāku, ļaujot uzzināt, vai komisija un pārdošana jau pastāv, pēc tam modificējiet to un neievietojiet to vēlreiz.
Šim nolūkam mums vajadzētu arī atpazīt pārdošanas vai rēķina numuru, tad mēs meklējam, vai produkts jau pastāv pārdošanas un pārdevēja numurā, tas nozīmē, ka tas jau pastāv un tika nodots ekspluatācijā, tāpēc mēs pārveidosim un neieliksim kā jaunu pārdošanu.
izvēlieties count (productid)> 0 uz jau pastāv no komisijas maksas, kur sellerid = sellerid un salesid = salesid; ja tā jau pastāv, tad UPDATE komisijas nosaka komisijas maksu = totalcommission, kur sellerid = sellerid un salesid = salesid; citādi ievietojiet komisijas (pārdevēja, komisijas) vērtībās (sellerid, productid, Commission, totalcommission); beigt, ja;Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu