У меня есть следующий триггер для таблицы для базы данных SQL Server 2008. Это рекурсия, поэтому мне нужно остановить ее.Как предотвратить повторный запуск триггера базы данных?
После того, как я вставляю или обновляю запись, я пытаюсь просто обновить одно поле в этой таблице.
Вот триггер:
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
Может кто-нибудь сказать мне, как я могу предотвратить вставку триггера от сбрасывая другой триггер снова?
Ряд людей сказали, чтобы отключить триггер рекурсию. прямо сейчас, я не хочу прикасаться к этой настройке. Я предпочитаю фиксировать tsql. –
Затем следует, что триггер не должен быть ПЕРЕД, но триггер INSTEAD OF? http://msdn.microsoft.com/en-us/library/ms175089.aspx –