SQL Server:当updater是另一个触发器时,不要执行Trigger

时间:2014-08-21 14:54:31

标签: sql sql-server triggers

以下是该方案: Person表中都有Trigger A和Trigger B.当表Person的更新来自Trigger B时,我无法触发Trigger A.

有什么东西,例如我可以用来解决这种情况的IF吗?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

一开始,我会警告你,在一张桌子上有多个触发器并不是一个好主意。如果可能,尝试将两个触发器的操作合并为一个。但是,如果这不是您的解决方案,请继续阅读我的版本。 (我不确定它是否具有实际效果,但无论如何都要继续拍摄)

CREATE TRIGGER triggerB
ON yourtable 
FOR UPDATE 
AS 
    BEGIN
    ALTER TABLE table_name DISABLE TRIGGER triggerA
    --your processing
    ALTER TABLE table_name ENABLE TRIGGER triggerA
    END

This question处理禁用然后在存储过程中启用触发器。这是触发器中的相同应用。

免责声明:我指望这会失败,因为在同一个表上定义的触发器中更改表似乎是一项不可能完成的任务。但是我没有资源来测试我古怪的理论,所以请测试一下,让我知道我是否想得太远了。

答案 1 :(得分:1)

我明白了!

IF TRIGGER_NESTLEVEL(OBJECT_ID('TRIGGER_NAME')) = 0
BEGIN

    -- Your Trigger STuff

END

感谢您的回答和评论。