2012-11-02 162 views
0

在三张不同的表格中,我有单独的INSERT,UPDATEDELETE触发器。触发器可能不会触发吗?

我知道他们如预期的那样工作(尝试添加,删除,更新并确认要进入日志表的更改)。但是,恰巧行被删除或添加,没有我的日志表中有任何内容。

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

这是SQL Server的2005

+0

有没有可能是多个记录插入/在一个已删除单个语句?我认为触发器只会在SQL Server的这些情况下触发一次 – Tobsey

+2

这个问题的一个常见来源是,当你写出触发器只处理'inserted'或'deleted'中的单个行时(例如,从'ins中选择@var = col erted'),然后多行语句仅从触发器记录* 1 *行。你能展示你的触发器吗? –

+0

这当然是可能的,但总是有一个原因(设置未打开,记录锁定,代码中的语法等)。你能提供你的代码和一些上下文来帮助我们了解你的特定问题吗? –

回答

0

这是可能的,如果查询已执行禁止使用特定的触发,例如通过使用

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

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

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

更好:

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

向我们展示你的扳机,我们会弄清楚