Uzlabota MySQL - aktivizēšanas programmēšana

Satura rādītājs
Uzlabota MySQL - aktivizēšanas programmēšana
Aktivizētāji ir datu bāzes objekts, kas veic darbību, kad datubāzē ir notikusi darbība vai notikums.
Piemērs, ja ieejas biļete tiek pārdota, mēs atlaidām pieejamo vietu.
Vispārējais kods ir
IZVEIDOT TREIGERI sprūda nosaukums
{PIRMS | DESPUES DE}
// Tas tiks izpildīts pirms vai pēc notikuma
{IEVIETOT | ATJAUNINĀT | DELETE}
// darbība vai notikums, kas aktivizē aktivizētāju
IESLĒGTS tabulas nosaukums
// tās tabulas nosaukums, kas ietekmēja notikumu
KATRAI Rindai
sql paziņojums, kas jāizpilda
Mēs veidojam piemēru par biļešu pārdošanu uz pasākumu vai produktu noliktavā. Lai to pārbaudītu, varat izmantot phpmyadminn vai jebkuru programmatūru, kas atbalsta saglabātās procedūras un aktivizētājus.
Mēs izveidojam datu bāzi
IZVEIDOT DATABĀZI "pārdošana"
Mēs izveidojam 2 tabulas
Galds pārdoto biļešu glabāšanai
IZVEIDOT GALDA "biļetes" (
"id" int (10) NOT NULL AUTO_INCREMENT,
"idevent" int (11) NOT NULL,
`nroticket` int (11) NOT NULL,
PRIMĀRĀ ATSLĒGTA ("id")
) DZINĒJS = MyISAM DEFAULT CHARSET = latīņu1 AUTO_INCREMENT = 1;
Tabula, lai saglabātu biļešu pieejamību noteiktam pasākumam
IZVEIDOT TABULU, JA NAV “krājumu” (
"idevent" int (10) NOT NULL,
`stockactual` int (10) NAV NULL
) DZINĒJS = MyISAM DEFAULT CHARSET = latīņu1;
CREATE TABLE "notikumi" (
"idevent" int (10) NOT NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
datuma datums NAV NULL,
PRIMARY KEY ("idevent")
) DZINĒJS = MyISAM DEFAULT CHARSET = latīņu1 AUTO_INCREMENT = 1;
Mēs izveidojam sprūdu kā SQL vaicājumu, šajā gadījumā mēs izmantojam bezmaksas HEIDISQL programmatūru, JAUNU paziņojumu.
a norāda, kuru sprūda darbības lauku mēs izmantosim izpildē šajā gadījumā, ja to ir vairāk, es vienmēr tos izmantoju ar NEW priekšā,
CREATE TRIGGER `update_stock` PĒC INSERT ON` biļešu`
KATRAM
Rinda
UPDATE stock SET stockactual = stockactual -1 WHERE idevent = NEW.idevent

Mēs izpildām SQL paziņojumu un redzam, ka aktivizētājs patiešām ir izveidots:

Piemēram, mēs ievietojam tabulā 500 biļetes, kas pieejamas kādam pasākumam, šeit no sprūda netiks saņemta atbilde, jo mēs to izveidojam izpildīšanai, ja tabulas biļetēs tiek ievietots.
IEVIETOT "pārdošanas" krājumā ("eventide", "pašreizējais krājums") VĒRTĪBAS ("1", "500");

Tagad izmēģināsim aktivizētāju burvību
Pieņemsim, ka mēs pārdodam biļetes numuru 100 uz pirmo notikumu un ievietojam pārdošanu biļešu datubāzē
INSERT INTO biļetes (idevent, nroticket) VALUES ('1', '100');
Pavērojam, kas notika krājumu tabulā, un redzēsim, ka šī pasākuma krājumā tagad ir pieejamas 499 biļetes, jo tabulas ieliktnis biļete Es šauju un skrienu tīģeri update_stock.
Šīs metodikas izmantošana nodrošina izpildes pārredzamību gan lietotājam, gan programmētājam, zinot, ka darbība tiks izpildīta, ja to aktivizēs cits, un tādējādi izvairīsies no ikdienas uzdevumiem, piemēram, krājumu atjaunināšanas pārdošanas gadījumā, iedomājieties to, ja pārdošana ir tirgū ar tūkstošiem produktu, mēs redzam, kā ar dažām koda rindām mēs atrisinām lielu problēmu.
Vēl viens piemērs varētu būt produkta izņemšana no noliktavas un krājumu izņemšana
CREATE TRIGGER `Lower_products` PĒC DELETE ON` produktiem`
KATRAM

DELETE FROM stock
Rinda
Iespējas ir bezgalīgas, un jūs varat iedziļināties sarežģītākās situācijās, trigeri lieliski papildina saglabātās procedūrasVai 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
wave wave wave wave wave