我在 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
谁能告诉我如何防止触发器的插入件再次启动另一个触发器?
最佳答案
不确定它是否与OP的问题相关,但是如果您来这里是为了了解如何防止触发器中发生递归或相互递归,您可以像这样进行测试:
IF TRIGGER_NESTLEVEL() <= 1/*this update is not coming from some other trigger*/
MSDN link
关于sql - 如何防止数据库触发器递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529412/