Indholdsfortegnelse
Avanceret Mysql - Trigger -programmeringEn udløser er et objekt i databasen, der udfører en handling, når en handling eller hændelse er forekommet i databasen.
Eksempel når en entrébillet sælges, rabatterer vi en ledig plads.
Den generiske kode er
Opret TRIGGER udløsernavn
{FØR | DESPUES DE}
// Det vil blive udført før eller efter begivenheden
{INSERT | OPDATER | SLET}
// handling eller hændelse, der udløser udløseren
TIL tabellenavn
// navn på tabellen, der påvirkede begivenheden
FOR HVER RÆKKE
sql -erklæring, der skal udføres
Vi skaber eksemplet på billetsalg til en begivenhed eller et produkt på lager. For at teste dette kan du bruge phpmyadminn eller enhver software, der understøtter lagrede procedurer og udløsere.
Vi opretter databasen
Opret DATABASE `salg`
Vi laver 2 borde
Bordet til opbevaring af de solgte billetter
Opret tabellen `billetter` (
`id` int (10) IKKE NULL AUTO_INCREMENT,
`idevent` int (11) IKKE NULL,
`nroticket` int (11) NOT NULL,
PRIMÆR NØGLE (`id`)
) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Tabellen for at gemme tilgængeligheden af billetter til en bestemt begivenhed
Opret tabel, hvis den ikke findes 'lager' (
`idevent` int (10) IKKE NULL,
`stockactual` int (10) IKKE NULL
) MOTOR = MyISAM DEFAULT CHARSET = latin1;
Opret tabel 'begivenheder' (
`idevent` int (10) IKKE NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
`dato` dato IKKE NULL,
PRIMÆR NØGLE (`idevent`)
) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Vi opretter udløseren som en sql -forespørgsel, i dette tilfælde bruger vi den gratis HEIDISQL -software, den NYE erklæring. Kolonnenavn
a angiver hvilket felt af triggeroperationen, vi skal bruge i udførelsen i dette tilfælde, hvis der er flere, bruger jeg dem altid med NEW foran,
Opret TRIGGER `update_stock` EFTER INSERT ON` billetter`
FOR HVER
RÆKKE
OPDATER lager SET stockactual = stockactual -1 WHERE idevent = NEW.idevent
INDSÆT I "salgs" lager "(" eventide "," aktuel lager ") VÆRDIER ('1', '500');
Antag, at vi sælger billetnummer 100 til begivenhed 1 og indsætter salget i billetdatabasen
INSERT INTO tickets (idevent, nroticket) VÆRDIER ('1', '100');
Lad os observere, hvad der skete i lagerbordet, og vi vil se, at lageret til denne begivenhed nu har 499 billetter til rådighed, fordi indsatsen i tabellen billet Jeg skyder og kører tiggeren update_stock.
Brugen af denne metode tillader gennemsigtighed i udførelsen for både brugeren og programmøren, velvidende at en handling vil blive udført, hvis en anden udløser det og dermed undgå rutinemæssige opgaver som at opdatere en lager i tilfælde af salg, forestil dig dette, hvis salget er en marked med tusinder af produkter, ser vi, hvordan vi med et par linjer kode løser et stort problem.
Et andet eksempel kan være at fjerne et produkt fra lageret og fjerne lageret
Opret TRIGGER `Lower_products` EFTER DELETE ON` products`
FOR HVER
Slet fra lager WHERE productid = NEW.productid
RÆKKE
Mulighederne er uendelige, og du kan gå dybt ind i mere komplekse situationer, udløsere er et godt supplement til lagrede procedurerKan 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