触发器是否可能不会触发?

时间:2012-11-02 13:04:06

标签: sql sql-server sql-server-2005 triggers

在三个不同的表格中,我有INSERTUPDATEDELETE个触发器。

我肯定地知道他们按预期工作(尝试添加,删除,更新并确认对日志表的更改)。但是,如果没有我的日志表包含任何内容,就会删除或添加行。

所以我的问题是:例如是否可以在没有触发启用的INSERT触发器的情况下添加记录?

这是在SQL Server 2005上。

1 个答案:

答案 0 :(得分:0)

如果执行了禁止使用特定触发器的查询,例如,使用

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

此外,正如Damien指出的那样,在某些情况下,您的触发器可能只适用于单个记录。 错了(简单的例子:

    UPDATE table SET field = value WHERE PK = (SELECT PK FROM inserted)

更好:

    UPDATE table SET field = value WHERE PK IN (SELECT PK FROM inserted)

向我们展示你的触发器,我们会弄明白。