Tengo el siguiente disparador en una tabla para una base de datos de SQL Server 2008. Está recurriendo, así que tengo que detenerlo.¿Cómo evito que una activación de la base de datos vuelva a activarse?
Después de insertar o actualizar un registro, intento simplemente actualizar un solo campo en esa tabla.
Aquí es el gatillo:
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
¿Puede alguien decirme cómo puedo evitar la inserción del activador desde dando inicio a otro factor desencadenante de nuevo?
Un número de personas han dicho a deshabilitar la recursividad gatillo. en este momento, no voy a querer tocar esa configuración. Prefiero reparar el tsql. –
Entonces pegar el disparador no debe ser ANTES sino un gatillo INSTEAD OF? http://msdn.microsoft.com/en-us/library/ms175089.aspx –