0
在三张不同的表格中,我有单独的INSERT
,UPDATE
和DELETE
触发器。触发器可能不会触发吗?
我知道他们如预期的那样工作(尝试添加,删除,更新并确认要进入日志表的更改)。但是,恰巧行被删除或添加,没有我的日志表中有任何内容。
所以我的问题是:是否有可能在不启用INSERT触发器的情况下添加记录?
这是SQL Server的2005
在三张不同的表格中,我有单独的INSERT
,UPDATE
和DELETE
触发器。触发器可能不会触发吗?
我知道他们如预期的那样工作(尝试添加,删除,更新并确认要进入日志表的更改)。但是,恰巧行被删除或添加,没有我的日志表中有任何内容。
所以我的问题是:是否有可能在不启用INSERT触发器的情况下添加记录?
这是SQL Server的2005
这是可能的,如果查询已执行禁止使用特定的触发,例如通过使用
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)
向我们展示你的扳机,我们会弄清楚
有没有可能是多个记录插入/在一个已删除单个语句?我认为触发器只会在SQL Server的这些情况下触发一次 – Tobsey
这个问题的一个常见来源是,当你写出触发器只处理'inserted'或'deleted'中的单个行时(例如,从'ins中选择@var = col erted'),然后多行语句仅从触发器记录* 1 *行。你能展示你的触发器吗? –
这当然是可能的,但总是有一个原因(设置未打开,记录锁定,代码中的语法等)。你能提供你的代码和一些上下文来帮助我们了解你的特定问题吗? –