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)
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!