SQL Server - 执行顺序/触发后

时间:2013-05-03 12:02:14

标签: sql sql-server database tsql

我想知道执行语句和触发第一个AFTER触发器之间的时间延迟。在出于并发原因查询完成后,我将对datetime2字段进行简单更新。 INSTEAD OF触发器将是我的第一选择,但SELECT INTO不适用于SQL Azure。

我想知道在AFTER触发器开始执行之前是否可以检索一行,如果是这样,在重负载下发生这种情况的可能性是多少?

2 个答案:

答案 0 :(得分:3)

没有延迟。触发器是事务/声明的一部分。

此外,您还有包含已更改数据的INSERTED和DELETED特殊表:无需在触发器中查询实际表

修改

最后,如果列上有默认值,则可以使用此

UPDATE
   SomeTable
SET
   foo = ...,
   bar = ...,
   TheDateTime2Column = DEFAULT -- this
WHERE
   ...

答案 1 :(得分:0)

没有预定义的延迟,但是如果你在两个地方调用GETDATE(),你可能迟早会得到不同的结果,具体取决于硬件,数据量和触发器的复杂程度。 / p>

为了确保您没有读取脏数据或不一致数据,您应该根据您需要的数据访问类型明智地使用事务隔离级别。