Que sont les déclencheurs en SQL et comment les mettre en œuvre?
Un déclencheur en SQL est un code procédural qui s’exécute automatiquement en réponse à certains événements sur une table spécifiée. Il est important de comprendre comment ces petits codes font une si grande différence dans les performances de la base de données. Dans cet article, vous apprendrez à mettre en œuvre des déclencheurs accompagnés d’exemples.
Les sujets suivants seront couverts dans cet article :
- Qu’est-ce qu’un déclencheur ?
- Syntaxe et exemple
- Fonctionnement dans les déclencheurs
- Avantage et inconvénient
Qu’est-ce qu’un déclencheur ?
Les triggers sont les codes SQL qui sont exécutés automatiquement en réponse à certains événements sur une table particulière. Ils sont utilisés pour maintenir l’intégrité des données. Un déclencheur en SQL fonctionne de manière similaire à un déclencheur du monde réel. Par exemple, lorsqu’on appuie sur la gâchette d’un pistolet, une balle est tirée. Nous le savons tous, mais quel est le rapport avec les déclencheurs en SQL ? Pour le comprendre, considérons une situation hypothétique.
John est le responsable marketing d’une entreprise. Lorsque les données d’un nouveau client sont saisies dans la base de données de l’entreprise, il doit envoyer le message de bienvenue à chaque nouveau client. S’il s’agit d’un ou deux clients, John peut le faire manuellement, mais que faire si le compte est supérieur à mille ? Eh bien dans un tel scénario, les déclencheurs sont très utiles.
Donc, maintenant John peut facilement créer un déclencheur qui enverra automatiquement un email de bienvenue aux nouveaux clients une fois que leurs données sont entrées dans la base de données. Donc j’espère que vous êtes au clair avec l’introduction des déclencheurs en SQL.
Toujours se rappeler qu’il ne peut pas y avoir deux déclencheurs avec un temps d’action et un événement similaires pour une table. Par exemple, nous ne pouvons pas avoir deux déclencheurs BEFORE UPDATE pour une table. Mais nous pouvons avoir un déclencheur BEFORE UPDATE et un déclencheur BEFORE INSERT, ou un déclencheur BEFORE UPDATE et un déclencheur AFTER UPDATE.
Avant de nous plonger davantage dans les principes fondamentaux des déclencheurs, je vous suggère de comprendre les concepts de SQL Basics et de normalisation afin de mieux appréhender les déclencheurs en SQL.
Syntaxe et exemple
Regardons maintenant la syntaxe d’un trigger.
Create Trigger Trigger_Name(Before | After) on
Maintenant, laissez-moi décomposer cette syntaxe et expliquer chaque partie en détail.
- Créer un trigger
Ces deux mots-clés sont utilisés pour spécifier qu’un bloc trigger va être déclaré. - Nom_du_trigger
Il spécifie le nom du trigger. Le nom du déclencheur doit être unique et ne doit pas se répéter. - ( Before | After )
Cela spécifie quand le déclencheur sera exécuté. Il nous indique le moment où le déclencheur est initié, c’est-à-dire soit avant l’événement en cours, soit après.
- Before Les déclencheurs sont utilisés pour mettre à jour ou valider les valeurs des enregistrements avant qu’ils ne soient enregistrés dans la base de données.
- Les déclencheurs après sont utilisés pour accéder aux valeurs des champs qui sont définies par le système et pour effectuer des changements dans d’autres enregistrements. Les enregistrements qui activent le déclencheur After sont en lecture seule. Nous ne pouvons pas utiliser le déclencheur After si nous voulons mettre à jour un enregistrement car cela entraînera une erreur de lecture seule.
- Ce sont les opérations DML et nous pouvons utiliser l’une ou l’autre dans un déclencheur donné.
- on
Nous devons mentionner le nom de la table sur laquelle le déclencheur est appliqué. N’oubliez pas d’utiliser le mot clé on et assurez-vous également que la table sélectionnée est présente dans la base de données.
-
- Le déclencheur de niveau ligne s’exécute avant ou après que toute valeur de colonne d’une ligne change
- Le déclencheur de niveau colonne s’exécute avant ou après que la colonne spécifiée change
-
Il se compose de requêtes qui doivent être exécutées lorsque le déclencheur est appelé.
C’était donc tout au sujet d’un déclencheur simple. Mais nous pouvons également créer un trigger imbriqué qui peut faire du multi-processus. Aussi le gérer et le terminer au bon moment est très important. Si nous ne terminons pas le trigger correctement, cela peut conduire à une boucle infinie.
Vous vous demandez peut-être dans quel scénario nous pouvons utiliser le trigger imbriqué. Plutôt que de vous donner une réponse sur mesure, laissez-moi partager avec vous un scénario qui vous aidera à mieux comprendre le nested trigger. Dans la continuité du scénario précédent, John a envoyé un email pour chaque nouveau client ajouté à la base de données de l’entreprise. Maintenant, que se passe-t-il s’il souhaite garder la trace du nombre de clients à qui l’email a été envoyé ? Maintenant, John doit créer un déclencheur imbriqué pour garder la trace du compte en même temps que l’envoi d’un email.
C’était donc tout sur la syntaxe des triggers, essayons maintenant de mettre en œuvre un exemple de triggers en SQL.
Exemple de trigger:
Dans le trigger ci-dessous, nous essayons de calculer le pourcentage de l’étudiant dès que ses détails sont mis à jour dans la base de données.
CREATE TRIGGER sample_triggerbefore INSERTON studentFOR EACH ROWSET new.total = new.marks/6;
Ici, le mot clé « NEW » fait référence à la ligne qui est en train d’être affectée.
Opérations dans les déclencheurs
Nous pouvons effectuer de nombreuses opérations en utilisant les déclencheurs. Certaines peuvent être simples et d’autres un peu complexes, mais une fois que si nous parcourons la requête, elle est facile à comprendre.
- DROP A Trigger
DROP TRIGGER trigger name;
- Display A Trigger
Le code ci-dessous affichera tous les triggers présents.
SHOW TRIGGERS;
Le code ci-dessous affichera tous les déclencheurs présents dans une base de données particulière.
SHOW TRIGGERSIN database_name;
Exemple:
SHOW TRIGGERS IN edureka;
Dans l’exemple ci-dessus, tous les déclencheurs qui sont présents dans la base de données nommée Edureka seront affichés.
Nous examinons également quelques variantes majeures des déclencheurs qui est Before insert et After insert. Nous avons déjà vu un déclencheur dans l’exemple. Mais à l’aide du tableau, voyons comment cela fonctionne exactement.
Comme nous avons déjà compris comment créer un déclencheur, comprenons maintenant les deux variantes du déclencheur que sont Before insert et After insert. afin de les mettre en œuvre, créons un tableau d’étudiants avec différentes colonnes comme indiqué ci-dessous :
Maintenant, si nous exécutons cette requête, nous obtenons le tableau suivant.
Essayons d’utiliser la première variante c’est-à-dire Before Insert
CREATE TRIGGER calculatebefore INSERT ON studentFOR EACH ROWSET new.marks = new.marks+100;
Ici, lorsque nous insérons des données dans la table des étudiants automatiquement, le déclencheur sera invoqué. Le déclencheur ajoutera 100 à la colonne des notes dans la colonne des étudiants.
Maintenant, utilisons la deuxième variante c’est-à-dire, Après l’insertion
Pour utiliser cette variante, nous avons besoin d’un tableau supplémentaire c’est-à-dire, le pourcentage où le déclencheur stockera les résultats. Utilisez le code ci-dessous pour créer le tableau des pourcentages.
create table Final_mark(per int );
Maintenant, utilisons le déclencheur after insert
CREATE TRIGGER total_markafter insert ON studentFOR EACH ROWinsert into Final_mark values(new.marks);
Ici, lorsque nous insérons des données dans le tableau, le déclencheur total_mark stockera le résultat dans le tableau Final_mark.
C’était tout sur le fonctionnement des triggers, allons maintenant de l’avant et regardons ses avantages et inconvénients.
Avantages et inconvénients des déclencheurs
Avantages
- Forcer les approbations de sécurité sur la table qui sont présentes dans la base de données
- Les déclencheurs fournissent un autre moyen de vérifier l’intégrité des données
- Contrecarrer les échanges invalides
- Les triggers gèrent les erreurs de la couche de base de données
- Normalement, les triggers peuvent être utiles pour inspecter les changements de données dans les tables
- Les triggers donnent un moyen alternatif d’exécuter des tâches planifiées. En utilisant les déclencheurs, nous n’avons pas besoin d’attendre que les événements planifiés s’exécutent parce que les déclencheurs sont invoqués automatiquement avant ou après qu’une modification soit apportée aux données d’une table
.
Inconvénients
- Les déclencheurs ne peuvent fournir que des validations étendues, c’est-à-dire pas toutes les validations de type. Pour des validations simples, vous pouvez utiliser les contraintes NOT NULL, UNIQUE, CHECK et FOREIGN KEY
- Les déclencheurs peuvent augmenter les frais généraux de la base de données
- Les déclencheurs peuvent être difficiles à dépanner car ils s’exécutent automatiquement dans la base de données, ce qui peut ne pas être invisible pour les applications clientes
Ceci nous amène à la fin de cet article sur les déclencheurs en SQL. J’espère que vous avez compris les concepts des déclencheurs.
Si vous souhaitez en savoir plus sur MySQL et apprendre à connaître cette base de données relationnelle open-source, consultez notre formation de certification MySQL DBA qui est accompagnée d’une formation en direct dirigée par un instructeur et d’une expérience de projet réelle. Cette formation vous aidera à comprendre MySQL en profondeur et à atteindre la maîtrise du sujet.