Dans cet article, nous explorerons comment créer et travailler avec des déclencheurs dans SQL Server.
Il existe trois principaux types de déclencheurs dans SQL Server:
Explorons ces déclencheurs dans ce guide.
SQL Server DML déclenche
Les déclencheurs du langage DML ou de manipulation de données sont le type de déclencheurs qui tirent en réponse à une opération d'insertion, de mise à jour et de suppression sur une table ou une vue. Les déclencheurs DML s'exécuteront lorsqu'une opération valide sera exécutée, si des lignes sont affectées.
Créer un DML après le déclencheur
Dans SQL Server, vous pouvez créer un déclencheur DML à l'aide de l'instruction Create Trigger.
Créer un schéma de déclenchement_.Trigger_nameDécomposons la syntaxe ci-dessus:
Pour apprendre à créer et à utiliser un déclencheur DML, prenons un exemple pratique.
Créez un exemple de base de données et insérez les données fournies dans l'ensemble des requêtes ci-dessous:
-- Créer une exemple de base de donnéesUne fois que nous avons les exemples de données, nous pouvons procéder et créer un déclencheur DML pour tirer sur une opération de mise à jour sur la table.
Considérez l'exemple ci-dessous:
-- Créer un tableau pour stocker l'historique de la mise à jourLa requête ci-dessus créera un déclencheur qui tire lorsque nous effectuons une mise à jour sur la table. Pour tester le déclencheur, nous pouvons exécuter une mise à jour comme:
-- table de mise à jourAprès l'exécution, nous pouvons vérifier si le déclencheur a fonctionné en sélectionnant les colonnes dans la table modifiée.
-- Vérifiez le tableau ModifiedDateDans SSMS, vous pouvez afficher les déclencheurs sur une table en élargissant l'option Triggers:
Créer au lieu de déclencheurs
L'autre type de déclencheurs DML dans SQL Server est au lieu de déclencher. Ce sont des types de déclencheurs qui s'exécutent au lieu de l'instruction DML. Par exemple, si nous spécifions une instruction de suppression, nous pouvons utiliser les déclencheurs au lieu de s'exécuter avant l'opération.
La syntaxe pour la création d'un déclencheur au lieu est comme indiqué:
Créer un schéma de déclenchement_.Trigger_namePar exemple, la requête ci-dessous crée un déclencheur qui affiche un message lorsqu'une opération d'insertion est effectuée sur la table.
-- Créer au lieu du déclencheurUne fois que nous avons exécuté la requête ci-dessus, nous devons recevoir un message indiquant que nous ne pouvons pas effectuer un insert sur la table.
ErreurVous ne pouvez pas insérer dans ce tableau
SQL DDL déclenche
DDL ou le langage de définition des données sont des déclencheurs qui répondent aux événements au serveur ou à la base de données au lieu d'un tableau. Les déclencheurs de DDL répondront à des événements tels que Drop, Grant, Deny, Revok, Mettez à jour les statistiques, créez et modifiez.
Créer des déclencheurs DDL
La syntaxe pour créer un déclencheur DDL est comme indiqué:
Créer Trigger Trigger_nameNous pouvons décomposer la syntaxe comme:
L'exemple de requête ci-dessous crée un déclencheur DDL qui tire lorsqu'une déclaration de table de dépôt est publiée.
-- Créer un déclencheur DDLUne fois que nous aurons exécuté un événement de dépôt dans la base de données, le déclencheur affichera des informations sur l'événement à l'aide de la fonction EventData ().
Nous pouvons tester le déclencheur:
-- déclencheur de testLa requête doit retourner des informations XML sur l'événement en tant que:
Dans SSMS, vous pouvez afficher les déclencheurs en élargissant les déclencheurs de la base de données sous programmabilité dans votre base de données cible.
Activer / désactiver les déclencheurs
SQL Server vous permet d'activer et de désactiver les déclencheurs. Pour activer un déclencheur sur une table, utilisez la requête comme:
Activer Trigger Update_trigger sur les ventes;Où update_trigger représente le nom et les ventes du déclencheur représentent le nom du tableau.
Vous pouvez également activer tous les déclencheurs sur une table en tant que:
Activer le déclencheur sur table_name;Pour activer le déclencheur de la base de données, utilisez la requête:
Activer le déclenchement drop_ddl_trigger sur les ventes;Ici, drop_ddl_trigger représente le nom de déclencheur et les ventes représentent la base de données.
Pour activer tous les déclencheurs de la base de données, utilisez la requête:
Activer le déclenchement des ventes;Pour désactiver une table ou un déclencheur de base de données, remplacez le mot-clé Activer par Disable ☺️.
Supprimer la gâchette
Pour supprimer un déclencheur, vous pouvez utiliser l'instruction DROP comme indiqué:
Drop Trigger si existe Trigger_name;SQL Server montre tous les déclencheurs
Pour afficher tous les déclencheurs dans une instance SQL Server, utilisez la requête comme indiqué:
Sélectionnez Nom, Type_desc, is_disabled, is_instead_of_trigger à partir de sys.déclenche où type = 'tr'La requête doit renvoyer tous les déclencheurs de l'instance SQL Server comme:
SQL Server Logon déclenche
Les déclencheurs de connexion sont un type de déclencheurs qui s'exécutent lorsqu'une activité de connexion se produit sur le serveur. Ces types de déclencheurs s'exécutent après une authentification réussie mais avant de créer une session utilisateur. Puisqu'ils sont utilisés pour gérer l'activité de connexion, nous les créons au niveau du serveur, comme indiqué dans l'exemple ci-dessous:
AVERTIR: Le déclencheur ci-dessous peut empêcher les connexions futures du serveur. Assurez-vous de supprimer avant de vous connecter.
AVERTIR - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Créer un déclencheur de connexionLe déclencheur affichera un message lorsque l'utilisateur se connecte dans le serveur.
Conclusion
Dans ce guide, vous avez compris divers types de déclencheurs, comment créer, activer, désactiver, supprimer et afficher les déclencheurs dans SQL Server.