Maison > base de données > tutoriel mysql > Comment empêcher la récursion dans les déclencheurs SQL Server ?

Comment empêcher la récursion dans les déclencheurs SQL Server ?

Susan Sarandon
Libérer: 2025-01-04 21:14:39
original
267 Les gens l'ont consulté

How to Prevent Recursion in SQL Server Triggers?

Prévention de la récursion dans les déclencheurs SQL Server

Les déclencheurs sont un outil puissant de gestion de base de données, permettant aux développeurs de mettre en œuvre des actions personnalisées lorsque des événements spécifiques se produisent dans une base de données. Cependant, les déclencheurs peuvent également conduire à une récursion involontaire, où un déclencheur s'appelle lui-même, entraînant une boucle infinie.

Dans SQL Server, des déclencheurs peuvent être créés pour s'exécuter automatiquement lorsqu'une table est modifiée via une insertion, une mise à jour ou supprimer des opérations. Pour éviter la récursion, il est crucial d'implémenter une vérification dans le code du déclencheur pour différencier les mises à jour initiées par le déclencheur lui-même et les mises à jour provenant d'autres sources.

Une approche pour éviter la récursion consiste à vérifier le niveau d'imbrication du déclencher à l’aide de la fonction TRIGGER_NESTLEVEL(). Cette fonction renvoie le niveau d'imbrication actuel du déclencheur, indiquant le nombre de fois qu'il a été exécuté de manière récursive. Si le niveau d'imbrication actuel est supérieur à 1, cela indique que le déclencheur est exécuté à partir de l'action d'un autre déclencheur et qu'aucune autre action n'est donc nécessaire.

Voici le code du déclencheur mis à jour qui intègre cette approche :

ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate] 
   ON  [dbo].[tblMedia]
   BEFORE INSERT, UPDATE
AS 
BEGIN
    SET NOCOUNT ON

    DECLARE @IdMedia INTEGER,
        @NewSubject NVARCHAR(200)   
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal