J'ai le déclencheur suivant sur une table pour une base de données SQL Server 2008. C'est récurent, alors j'ai besoin de l'arrêter. Après avoir inséré ou mis à jour un enregistrement, j'essaye simplement de mettre à jour un seul champ sur cette table.Comment empêcher un déclencheur de base de données d'être récursif?
Voici le déclencheur:
ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate]
ON [dbo].[tblMedia]
BEFORE INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @IdMedia INTEGER,
@NewSubject NVARCHAR(200)
SELECT @IdMedia = IdMedia, @NewSubject = Title
FROM INSERTED
-- Now update the unique subject field.
-- NOTE: dbo.CreateUniqueSubject is my own function.
-- It just does some string manipulation.
UPDATE tblMedia
SET UniqueTitle = dbo.CreateUniqueSubject(@NewSubject) +
CAST((IdMedia) AS VARCHAR(10))
WHERE tblMedia.IdMedia = @IdMedia
END
Quelqu'un peut-il me dire comment je peux empêcher l'insertion de la gâchette du coup d'envoi un autre déclencheur à nouveau?
Un certain nombre de personnes ont dit désactiver la récursivité de déclenchement. en ce moment, je ne vais pas vouloir toucher ce paramètre. Je préfère réparer le tsql. –
Puis peraps la gâchette ne doit pas être avant, mais un déclencheur INSTEAD OF? http://msdn.microsoft.com/en-us/library/ms175089.aspx –