Table des matières
Mysql avancé - Programmation de déclencheursUn déclencheur est un objet dans la base de données qui exécute une action lorsqu'une opération ou un événement s'est produit dans la base de données.
Exemple lorsqu'un billet d'entrée est vendu, nous réduisons une place disponible.
Le code générique est
CRÉER UN DÉCLENCHEUR nom du déclencheur
{AVANT | DESPUES DE }
// Il sera exécuté avant ou après l'événement
{INSÉRER | MISE À JOUR | EFFACER}
// action ou événement qui déclenche le déclencheur
ON nom de table
// nom de la table qui a affecté l'événement
POUR CHAQUE RANG
instruction sql à exécuter
Nous créons l'exemple de vente de billets pour un événement ou un produit en stock. Pour tester cela, vous pouvez utiliser phpmyadminn ou tout logiciel prenant en charge les procédures stockées et les déclencheurs.
Nous créons la base de données
CRÉER UNE BASE DE DONNÉES « ventes »
Nous créons 2 tableaux
La table pour ranger les billets vendus
CREER TABLE `tickets` (
`id` int (10) NON NULL AUTO_INCREMENT,
`idevent` int (11) NON NULL,
`nroticket` int (11) NON NULL,
CLÉ PRIMAIRE (`id`)
) MOTEUR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Le tableau pour stocker la disponibilité des billets pour un certain événement
CRÉER UNE TABLE S'IL N'EXISTE PAS `stock` (
`idevent` entier (10) NON NULL,
`stockactual` entier (10) NON NULL
) MOTEUR = MyISAM CHARSET PAR DEFAUT = latin1;
CREATE TABLE `événements` (
`idevent` int (10) NON NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
`date` date NON NULL,
CLÉ PRIMAIRE (`idevent`)
) MOTEUR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Nous créons le déclencheur en tant que requête SQL, dans ce cas nous utilisons le logiciel gratuit HEIDISQL, le NEW statement.column_name
a indique quel champ de l'opération de déclenchement on va utiliser dans l'exécution dans ce cas d'événement, s'il y en a plus je les utilise toujours avec NEW devant,
CRÉER LE DÉCLENCHEUR `update_stock` APRÈS INSÉRER SUR` tickets`
POUR CHAQUE
LIGNE
UPDATE stock SET stockactual = stockactual -1 WHERE idevent = NEW.idevent
Nous exécutons l'instruction SQL et constatons que le déclencheur a bien été créé :
A titre d'exemple nous insérons dans la table un stock de 500 tickets disponibles pour un événement, ici il n'y aura pas de réponse du déclencheur puisque nous le créons pour être exécuté si une insertion se produit dans la table tickets.
INSÉRER DANS `ventes``stock` (` eventide`, `stock actuel`) VALUES ('1', '500');
Essayons maintenant la magie des déclencheurs
Supposons que nous vendions le billet numéro 100 pour l'événement 1 et insérons la vente dans la base de données des billets
INSERT INTO tickets (idevent, nroticket) VALUES ('1', '100');
Observons ce qui s'est passé dans le tableau des stocks et nous verrons que le stock pour cet événement compte maintenant 499 billets disponibles, car l'encart dans le tableau billet Je tire et je cours le tigre update_stock.
L'utilisation de cette méthodologie permet une transparence d'exécution à la fois pour l'utilisateur et le programmeur, sachant qu'une action sera exécutée si une autre la déclenche et ainsi éviter les tâches routinières comme la mise à jour d'un stock en cas de vente, imaginez ceci si la vente est une marché avec des milliers de produits, nous voyons comment avec quelques lignes de code nous résolvons un gros problème.
Un autre exemple pourrait être de retirer un produit de l'entrepôt et de retirer le stock
CREATE TRIGGER `Lower_products` APRÈS SUPPRIMER ON` produits`
POUR CHAQUE
SUPPRIMER DU stock WHERE productid = NEW.productid
LIGNE
Les possibilités sont infinies et vous pouvez approfondir des situations plus complexes, les déclencheurs sont un excellent complément aux procédures stockéesAvez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif