【发布时间】:2015-03-23 14:21:20
【问题描述】:
我在table1 上有两个跳跳虎:
- 更新后触发 #1,它会更新
table1中的最后修改日期列 - 如果
col1是0,则在更新后触发#2,它会在table2中创建一条日志记录
所以问题是当我将col1 设置为0 时,触发器#2 在table2 中正确创建了记录,但是当触发器#1 再次修改记录时,触发器#2 在@987654330 中创建另一个日志记录@。
我想要的是防止触发器 #2 在触发器 #1 修改任何记录时被触发。
【问题讨论】:
-
一种方法是检查触发器 #2,除
last modified之外的任何列是否已更新 -
有没有办法检查修改了什么?
-
msdn.microsoft.com/en-us/library/ms189799.aspx 查找“测试特定列的 UPDATE 或 INSERT 操作”
-
检查TRIGGER_NESTLEVEL函数
-
另一个选项可能首先调查触发器的使用情况。许多(如果不是大多数)触发器可以避免,这将消除这个问题。除了审核它们的使用之外,最好还是尽量减少。
标签: sql sql-server triggers