Table des matières
L'instruction qui crée un déclencheur estCREATE TRIGGER trigger_name événement heure ON table SUR CHAQUE LIGNE
Moment
Cela peut être APRÈS ou AVANT, c'est-à-dire après ou avant qu'un événement SQL ne se produise, comme la création d'un enregistrement, la suppression, la sélection, la recherche, la modification, etc.
Événement
Nous appelons n'importe laquelle des opérations SQL un événement, cela peut être INSERT, UPDATE ou DELETE. Les sélections ne peuvent pas être effectuées à partir de déclencheurs (Sélectionner * à partir de…) cette opération est effectuée à partir de procédures stockées et non à partir de déclencheurs.
Instructions générales et commandes pour gérer les déclencheurs ou les déclencheurs
Nous créons un déclencheur pour un audit dans les ventes d'une agence automobile, chaque fois qu'un opérateur ou un vendeur modifie les données d'un client, automatiquement dans un tableau d'audits_cliente nous indiquerons la date et l'heure, qui a effectué le changement et qui est le client qui a été modifié
CREATE TRIGGER client_audit_trigger APRÈS LA MISE À JOUR SUR les clients POUR CHAQUE LIGNE INSERT DANS client_audit (clientid, modified_by, date) VALUES (OLD.clientid, NEW.idoperator, NOW ())Interroger tous les déclencheurs disponibles dans la base de données
Afficher les déclencheursDans ce cas, celui que nous créons audit client et voyons sa fonctionnalité dans différentes colonnes, un événement de mise à jour dans la table des clients qui fera une insertion et son utilisateur administrateur est root
Supprimer un déclencheur de la base de données
DROP TRIGGER nom du déclencheur
Comment appeler des procédures stockées dans un déclencheur
Nous analyserons un exemple pour une base de données de produits et que lors de la génération d'une vente, un vendeur doit également générer la commission qu'il gagne, puis la commission par vente doit être mise à jour après l'insertion ou la génération de la nouvelle vente ou elle peut également l'être après la génération d'une facture. , selon le business model à développer, mais il suffit que l'exemple soit compris.
Nous créons une procédure stockée qui calculera la commission en fonction de la quantité d'un produit vendu.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN quantité INT) BEGIN DECLARE totalcommission INT DEFAULT 0; Sélectionnez la commission des produits où productid = p_productid; totalcommission = commission * p_amount insérer dans les valeurs des commissions (vendeur, commission) (sellerid, productid, commission, totalcommission); FIN $$ DELIMITEUR $$
Nous créons maintenant le nouveau déclencheur de vente. Ce déclencheur sera exécuté après avoir inséré une vente et pris les données de celle-ci ou du détail de la vente.
CRÉER LE DÉCLENCHEUR nouvelle vente APRÈS INSÉRER sur les ventes POUR CHAQUE RANGÉE COMMENCER À APPEL pa_commissions (new.id seller, new.idproduct, new.quantity); FIN $$
On voit que la procédure stockée est appelée pour pouvoir consulter les données du produit, la commission et ainsi pouvoir calculer automatiquement le montant de la commission.
On pourrait aussi la complexifier en permettant de savoir si la commission et la vente existent déjà, puis la modifier et ne pas l'insérer à nouveau.
Pour cela, nous devons également reconnaître le numéro de vente ou de facture, puis nous recherchons si le produit existe déjà dans le numéro de vente et de vendeur, cela implique qu'il existe déjà et qu'il a été commandé, nous allons donc le modifier et ne pas l'insérer comme une nouvelle vente.
sélectionnez count (productid)> 0 dans existe déjà à partir de commissions où sellerid = sellerid et salesid = salesid; s'il existe déjà, les commissions UPDATE définissent commission = totalcommission où sellerid = sellerid et salesid = salesid; sinon insérer dans les commissions (vendeur, commission) des valeurs (sellerid, productid, commission, totalcommission); fin si;Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif