Geavanceerde Mysql - Trigger-programmering

Inhoudsopgave
Geavanceerde Mysql - Trigger-programmering
Een Triggers is een object in de database dat een actie uitvoert wanneer er een bewerking of gebeurtenis in de database heeft plaatsgevonden.
Voorbeeld: wanneer een toegangsbewijs wordt verkocht, geven we korting op een beschikbare stoel.
De generieke code is
TRIGGER MAKEN triggernaam
{VOOR | DESPUES DE }
// Het wordt voor of na het evenement uitgevoerd
{INSERT | BIJWERKEN | VERWIJDEREN}
// actie of gebeurtenis die de trigger activeert
ON tabelnaam
// naam van de tabel die de gebeurtenis beïnvloedde
VOOR ELKE RIJ
sql-instructie die moet worden uitgevoerd
We creëren het voorbeeld van kaartverkoop voor een evenement of product op voorraad. Om dit te testen kunt u phpmyadminn gebruiken of andere software die opgeslagen procedures en triggers ondersteunt.
Wij maken de database
MAAK DATABASE `verkoop`
We maken 2 tabellen
De tafel om de verkochte tickets op te slaan
MAAK TAFEL `tickets` (
`id` int (10) NIET NULL AUTO_INCREMENT,
`idevent` int (11) NIET NULL,
`nroticket` int (11) NIET NULL,
PRIMAIRE SLEUTEL (`id`)
) MOTOR = MyISAM STANDAARD CHARSET = latin1 AUTO_INCREMENT = 1;
De tabel om de beschikbaarheid van tickets voor een bepaald evenement op te slaan
MAAK TABEL INDIEN NIET BESTAAT `voorraad` (
`idevent` int (10) NIET NULL,
`stockactual` int (10) NIET NULL
) MOTOR = MyISAM STANDAARD CHARSET = latin1;
MAAK TABEL 'evenementen' (
`idevent` int (10) NIET NULL AUTO_INCREMENT,
`gebeurtenis` int (11) varchar (200),
`datum` datum NIET NULL,
PRIMAIRE SLEUTEL (`idevent`)
) MOTOR = MyISAM STANDAARD CHARSET = latin1 AUTO_INCREMENT = 1;
We maken de trigger als een sql-query, in dit geval gebruiken we de gratis HEIDISQL-software, de NIEUWE statement.column_name
a geeft aan welk veld van de triggerbewerking we in dit geval in de uitvoering gaan gebruiken, als er meer zijn, gebruik ik ze altijd met NIEUW vooraan,
MAAK TRIGGER 'update_stock' NA INSERT ON 'tickets'
VOOR ELKE
RIJ
UPDATE voorraad SET voorraad actueel = voorraad actueel -1 WHERE idevent = NEW.idevent

We voeren de SQL-instructie uit en zien dat de trigger inderdaad is gemaakt:

Als voorbeeld voegen we in de tafelvoorraad 500 tickets in die beschikbaar zijn voor een evenement, hier zal er geen reactie zijn van de trigger omdat we deze creëren om te worden uitgevoerd als er een invoeging plaatsvindt in de tafeltickets.
INSERT INTO `verkoop``voorraad` (` eventide`, `huidige voorraad`) WAARDEN ('1', '500');

Laten we nu de magie van triggers proberen
Stel dat we ticket nummer 100 verkopen voor evenement 1 en de verkoop invoegen in de tickets database
INSERT INTO tickets (idevent, nroticket) WAARDEN ('1', '100');
Laten we eens kijken wat er in de voorraadtabel is gebeurd en we zullen zien dat de voorraad voor dit evenement nu 499 tickets beschikbaar heeft, omdat de invoeging in de tabel ticket Ik schiet en ren de tijger update_stock.
Het gebruik van deze methodologie maakt de uitvoering transparant voor zowel de gebruiker als de programmeur, wetende dat een actie zal worden uitgevoerd als een andere deze activeert en zo routinetaken zoals het bijwerken van een voorraad in geval van verkoop te vermijden, stel je voor dat de verkoop een markt met duizenden producten, zien we hoe we met een paar regels code een groot probleem oplossen.
Een ander voorbeeld zou kunnen zijn om een ​​product uit het magazijn te halen en de voorraad te verwijderen
MAAK TRIGGER `Lagere_producten` NA VERWIJDEREN OP` producten`
VOOR ELKE

VERWIJDER UIT voorraad WAAR productid = NIEUW.productid
RIJ
De mogelijkheden zijn eindeloos en je kunt dieper ingaan op complexere situaties, triggers zijn een geweldige aanvulling op opgeslagen proceduresVond je deze tutorial leuk en hielp je hem?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave