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
Vi udfører SQL -sætningen og ser, at udløseren faktisk er blevet oprettet:
Som et eksempel indsætter vi i tabellen lager på 500 billetter til et arrangement, her vil der ikke være noget svar fra udløseren, da vi opretter det til at blive eksekveret, hvis der sker en indsættelse i bordbilletterne.
INDSÆT I "salgs" lager "(" eventide "," aktuel lager ") VÆRDIER ('1', '500');
Lad os nu prøve magi af udløsere
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