Nat*_*n W 8 database sql-server audit triggers
关于SQL Server 2005中的触发器的一般性问题.
在什么情况下表触发器被触发,它们不是什么情况?
任何要演示的代码示例都会很棒.
我正在编写一个基于审计的数据库,只是想知道任何可能不会触发我为我的表设置更新,删除和插入的触发器的情况.
我的意思是一个例子,
UPDATE MyTable SET name = 'test rows' WHERE id in (1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
以下语句仅触发更新触发器一次.
Eri*_*ric 19
你想什么时候开火?
CREATE TRIGGER AFTER ACTION
Run Code Online (Sandbox Code Playgroud)
在action(insert update delete
)被提交之后运行.INSTEAD OF
触发触发器代替动作.
带触发器的最大问题之一是,即使没有行受到影响,它们也会在执行操作时触发.这不是一个错误,如果你不小心的话,它可以很快燃烧你.
此外,使用触发器,您将使用inserted
和deleted
表.更新的行列在两者中.这引发了很多人的了,因为它们不是用来思考的update
一个delete
,然后insert
.
MSDN文档实际上有一个非常深入的讨论,关于何时触发器触发它们以及它们在这里有什么影响.
在2008年,您可以使用内置的Change Data Capture
还有很多情况下触发器不会触发,例如:
·删除表.
·表被截断.
·嵌套和/或递归触发器的设置可防止触发器触发.
·数据是批量加载的,绕过触发器.