Déclencheurs SQL : le guide essentiel
Les déclencheurs sont des entités de base de données dans SQL Server. techniqueally, il s'agit d'une classe particulière d'appels de fonction qui répond à des opérations de base de données spécifiques.
Ce guide essentiel vous donnera des informations détaillées sur SQL Des déclencheurs qui peuvent être très utiles dans votre métier. Commençons!
Que sont les déclencheurs SQL ?
Le mot « déclencheur » décrit un statement qu'un serveur automatiqueally exécute la requête chaque fois que le contenu de la base de données est modifié.
Un déclencheur est un groupe de spécificitésally nommé requêtes SQL qui sont stockés dans l’espace mémoire. Il s'agit d'un type spécifique d'appel de fonction qui est immédiat.ately invoqué chaque fois qu'un événement de base de données a lieu. Chaque déclencheur est associé à une table.

Par exemple, un déclencheur pourrait être actifated chaque fois qu'une nouvelle colonne est ajoutée à une table particulière ou si des enregistrements spécifiques sont modifiés.
Selon Microsoft Developer Network, les déclencheurs constituent une classe particulière de procédures stockées. Dans un état déclencheuratement, nous initionsally définir quand le déclencheur doit être exécuté, puis nous fournissons l'action qui doit être prise une fois le déclencheur activéated.
syntaxe:
CREATE TRIGGER trigger_name
BEFORE/AFTER
INSERT/UPDATE/DELETE
ON tableName
FOR EACH ROW SET operation [trigger_body];
Explication de chaque paramètre
- CREATE TRIGGER nom_déclencheur – Il est utilisé pour construire un déclencheur ou pour changer le nom d'un déclencheur existant.
- AVANT APRÈS – Cette requête est utilisée pour définir le temps d'exécution du déclencheur (avant ou après un certain événement).
- INSÉRER/MISE À JOURATE/ SUPPRIMER – Ceci décrit l'action que nous souhaitons effectuer sur les tables.
- SUR nomtable – Ici, nous définissons le nom de la table pour configurer un déclencheur.
- POUR CHAQUE ROW – Ce statement relates au déclencheur de ligne, ce qui signifie que les déclencheurs seront exécutés chaque fois qu'une ligne est modifiée.
- corps_déclencheur – Il précise l’action à entreprendre lorsque le déclencheur est activéated.
Les déclencheurs sont des fonctions stockées avec des identités distinctes qui nous permettent de réutiliser des requêtes qui ont déjà été exécutées et stockées en toute sécurité dans la mémoire. Essayons maintenant de comprendre pourquoi SQL en a besoin.
Les déclencheurs sont principalement utilisés pour régulerate le déploiement de code chaque fois qu'un événement a lieu. En d’autres termes, l’utilisation de déclencheurs est le choix idéal si vous avez besoin qu’un fragment de code spécifique soit constamment exécuté en réponse à un événement spécifié.
Voici quelques avantages de l'utilisation de déclencheurs dans les opérations de base de données SQL.
- Effectue des vérifications supplémentaires lors de l'insertion, de la mise à jour ou de la suppression de données de la table concernée.
- Réduit les temps de réponse, ce qui contribue à augmenter les dépenses informatiques.
- Permet l'encodage de sophistiquesated paramètres par défaut inaccessibles par les contraintes initiales.
L’intégrité référentielle est une propriété essentielle des systèmes de bases de données relationnelles. Cela signifie que les données conservées dans le système de base de données doivent toujours être exactes.ate pour chaque transaction et chaque opération.
Si deux tables sont situéesated en séparationate bases de données ou systèmes, il n'existe aucun moyen de garantir la validation des données en leur sein à l'aide de valeurs de contrainte. Dans une telle situation, les déclencheurs sont la seule option d’exécution.
Combinaison d'arguments déclencheurs

Pour chaque table, nous pouvons spécifier six types de déclencheurs différents. Il s'agit de la combinaison d'arguments de déclencheur inclus dans les déclencheurs de niveau ligne SQL.
AVANT INSÉRER: These triggers execute the action on the rows prior to performing any INSERT operations in the specified table or on the database.
APRÈS INSERTION: It executes the action on rows immédiatately après toute activité INSERT de base de données.
AVANT LA MISE À JOURATE: With these triggers, a function on the rows is carried out prior to an UPDATE action effectuée sur la base de données.
APRÈS LA MISE À JOURATE: It executes the action on rows immédiatateen suivant n'importe quelle base de données ou table spécifique UPDATE activité.
AVANT DE SUPPRIMER: It executes a certain operation on rows even before the database or table is subjected to a DELETE action.
APRÈS SUPPRIMER: These triggers execute the action on the rows following every DELETE transaction.
Types de déclencheurs SQL

Les déclencheurs SQL sont des fonctions stockées qui s'exécutent immédiatement.ately lorsque des événements spécifiques se produisent. Cela ressemble à une planification basée sur les événements. Les situations ultérieures peuvent déclencher l'exécution des déclencheurs.
Déclencheurs DML – DML signifie Data Manipulation Language. L'exécution de code en réaction à une modification des données est rendue possible à l'aide de déclencheurs DML. Ce déclencheur est actifated lorsque les commandes DML comme INSERT, UPDATE, et DELETE sont exécutés. Ceux-ci sont également appelés « déclencheurs au niveau de la table ».
Déclencheurs DDL – DDL signifie Data Definition Language. Les déclencheurs DDL nous permettent d'exécuter du code en réaction aux modifications du schéma de la base de données, telles que l'ajout ou la suppression de tables, ou des événements de serveur, comme lorsqu'un utilisateur s'enregistre. Ceux-ci sont appelés «déclencheurs au niveau de la base de données».
Ces déclencheurs peuvent être actifsated, Quand certains DDL statements tels que CREATE, ALTER ou DROP sont exécutés dans la base de données active. Ceux-ci peuvent également être utilisés pour surveiller et gérer les activités exécutées.
Déclencheurs de CONNEXION – Chaque fois qu'un événement LOGON (démarrage, connexion, déconnexion, arrêt) se produit, les déclencheurs de connexion sont immédiats.ately invoqué. Elles ne sont réalisées qu'après une authentification de l'utilisateur process avant même le lancement de la transaction utilisateurated. Les déclencheurs LOGON ne seront pas déclenchés si l’autorisation échoue.
Ces déclencheurs peuvent être utilisés pour enregistrer l'historique des connexions ou établir une restriction d'événement pour une connexion particulière, entre autres fonctions d'audit et de gestion des identités pour les connexions au serveur.
Déclencheurs CLR – CLR signifie Common Language Runtime. Les déclencheurs CLR sont en effet un sous-ensemble unique de déclencheurs construits principalement sur CLR au sein de la technologie .NET. Ces déclencheurs sont utiles si le déclencheur doit effectuer de nombreux calculs ou s'il doit relate à une entité autre que SQL.
Les déclencheurs DML et DDL peuvent en effet être construits en activant le codage des déclencheurs CLR pris en charge dans les technologies .NET, notamment Visual Basic, C# et F-sharp.
Exemple de déclencheur SQL Server

Comprenons ces concepts de déclencheur avec un exemple.
D'abord, allons CREate une base de données utilisant SQL statement.
CREATE DATABASE testdb;
use testdb;
Ici, j'ai donné un « testdb » comme nom de la base de données. Et la prochaine étape consiste à créerate une table.
CREATE TABLE student(
name varchar(25),
id int(2),
maths int(2),
physics int(2),
biology int(2),
social int(2),
total int(2)
);
j'ai createune table pour stocker les détails de l'étudiant. Et voici la commande pour décrire la structure du tableau. Ici, « étudiant » est le nom de table que j’ai donné.
DESC student;
Ci-dessous la structure du tableau que j'ai crééated.
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(25) | YES | | NULL | |
| id | int | YES | | NULL | |
| maths | int | YES | | NULL | |
| physics | int | YES | | NULL | |
| biology | int | YES | | NULL | |
| social | int | YES | | NULL | |
| total | int | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
Après avoir créé une table, l'étape suivante consiste à configurer un déclencheur. Essayons d'utiliser le AVANT INSÉRER argument.
Le nom du déclencheur que j'ai crééated est « marques ». Dès que le tableau est modifié avec les notes de l'élève, le déclencheur ci-dessous tente de déterminer automatiquement la note globale de l'élève.ally.
CREATE TRIGGER marks
BEFORE INSERT
ON
student
FOR EACH ROW
set new.total=new.maths+new.physics+new.biology+new.social;
Since we are required to replace rows data rather than working with the old ones, we have defined “total” using a new class name, and all subsequent expressions are prefixed with new keywords after total using the dot operator. Now, we will add values to each row and see the results. Initially, la note totale est de 0 pour chaque élève.
INSERT INTO student VALUES("George",02,99,87,92,91,0);
INSERT INTO student VALUES("James",03,91,81,94,90,0);
INSERT INTO student VALUES("Harry",04,86,70,73,88,0);
INSERT INTO student VALUES("John",05,73,89,78,92,0);
INSERT INTO student VALUES("Lisa",01,94,75,69,79,0);
Le point déclencheuratele réglage sera automatiqueally déclenché lorsque les données sont insérées dans la table des étudiants dans ce cas. Les notes totales de chaque élève seront calculéesated par la gâchette. Voyons maintenant si le déclencheur est invoqué ou non à l'aide d'un SELECT statement.
SELECT * FROM table_name;
Et voici la sortie finale.
mysql> select * from student;
+--------+------+-------+---------+---------+--------+-------+
| name | id | maths | physics | biology | social | total |
+--------+------+-------+---------+---------+--------+-------+
| George | 2 | 91 | 81 | 94 | 90 | 356 |
| James | 3 | 86 | 70 | 73 | 88 | 317 |
| Harry | 4 | 73 | 89 | 78 | 92 | 332 |
| John | 5 | 94 | 75 | 69 | 79 | 317 |
| Lisa | 1 | 99 | 87 | 92 | 91 | 369 |
+--------+------+-------+---------+---------+--------+-------+
5 rows in set (0.00 sec)
Dans le résultat ci-dessus, vous pouvez voir que toutes les marques de sujet sont automatiques.ally ajouté pour chaque élève. Nous pouvons donc conclure que le déclencheur a été invoqué avec succès.
Opérations de déclenchement supplémentaires
Nous pouvons effectuer de nombreuses opérations à l’aide de déclencheurs. Certaines peuvent être simples et d’autres un peu complexes, mais une fois que nous avons parcouru les requêtes, c’est facile à comprendre. En employant Transact-SQL statements, you can enable, disable or delete the triggers using the following commands.
Requête pour vérifier si un déclencheur spécifique est là ou non
Cette commande recherche le déclencheur spécifié dans toute la base de données.
SELECT * FROM [sys].[triggers] WHERE [name] = 'Trigger_name'
Requête pour afficher les déclencheurs
Tous les déclencheurs disponibles dans la base de données active seront affichés par le st suivantatement.
SHOW TRIGGERS;
Query to Disable Gâchette
La commande ci-dessous est désactivéeateest le déclencheur dans la base de données de travail.
DISABLE TRIGGER trigger_name ON DATABASE;
You can also specify a certain table name to disable a trigger.
DISABLE TRIGGER trigger_name ON table_name;
Requête pour activer le déclencheur
La commande suivante désactive d'abordateun déclencheur spécifique qui a été défini sur la table spécifiée dans la base de données active avant de la réactiver.
ALTER TABLE table_name DISABLE TRIGGER trigger_name
ALTER TABLE table_name ENABLE TRIGGER trigger_name
The trigger must be disabled, before trying to enable it,
Query to enable or disable all triggers in a table
En utilisant le code SQL ci-dessusatement, nous pouvons désactiverate ou actifate tous les déclencheurs de table à la fois en remplaçant « TOUS » à la place d'un nom de déclencheur spécifique.
ALTER TABLE table_name DISABLE TRIGGER ALL
ALTER TABLE table_name ENABLE TRIGGER ALL
Requête pour supprimer ou supprimer un déclencheur
Un déclencheur peut être éliminéated en le supprimant ou en supprimant le tableau entier. Chaque relateLe déclencheur d est également supprimé lorsqu'une table est supprimée.
DROP TRIGGER [trigger_name];
Chaque fois qu'un déclencheur est supprimé, le relateles données sont éliminéesated de la table de données sys.objects.
Avantages des déclencheurs
- It’s simple to build triggers and the trigger itself can invoke stored functions and methods.
- Les utilisateurs peuvent implémenter un audit simple à l'aide de déclencheurs.
- Tragiqueally, tu ne peux pas créerate contraintes entre les entités dans les systèmes de bases de données avec SQL Server, bien que vous puissiez émulerate le fonctionnement des contraintes en utilisant des déclencheurs.
- Les contraintes d'intégrité peuvent être implémentées dans les bases de données à l'aide de déclencheurs.
- Lorsqu'une validation de groupe est requise plutôt qu'une vérification ligne par ligne des données nouvellement saisies ou modifiées, les déclencheurs peuvent être utiles.
Inconvénients des déclencheurs
Les déclencheurs SQL peuvent ne pas être le meilleur choix dans certaines situations en raison de leurs limites.
- Les déclencheurs doivent être précisately documenté.
- Due to simultaneous database execution that might not be accessible to application components, triggers can be challenging to debug.
- DML stateLes opérations deviennent plus complexes lorsque des déclencheurs sont utilisés.
- Même un problème de déclenchement mineur peut potentiellement entraîner des erreurs logiques dans le processus.atement.
Conclusion
Les déclencheurs sont des composants très utiles de Transact-SQL et SQL, et vous pouvez également les utiliser dans Oracle. L'utilisation de déclencheurs est cruciale lors de l'appel de méthodes stockées. Ces déclencheurs SQL nous permettent d'analyser les chronologies d'activité et de déterminer comment y répondre si nécessaire. Nous pouvons également rechercher une certaine table qui est connectée à un déclencheur pour acquérir des données.
La récursivité peut être activée par des déclencheurs. Chaque fois qu'un déclencheur sur une table exécute une commande sur la table parent, la deuxième itération du déclencheur est déclenchée, et c'est ce qu'on appelle un déclencheur récursif. Cela aide tout en essayant de résoudre une corrélation d'identité.
Additionally, déclenche la régulationate le modèle de mise à jour que la base de données est autorisée à accepter. Il est très avantageux de conserver les contraintes d'intégrité des données dans le système de base de données s'il n'existe pas de clés de contraintes SQL, principalement la clé primaire et la clé étrangère.
J'espère que vous avez trouvé cet article utile pour en savoir plus sur les déclencheurs SQL.
Si vous souhaitez apprendre les bases de données en profondeur, voici quelques excellentes ressources pour apprendre SQL et NoSQL.