我想知道执行语句和触发第一个 AFTER 触发器之间的时间延迟是多少。由于并发原因,在查询完成后,我将对 datetime2 字段进行简单更新。INSTEAD OF 触发器是我的首选,但 SELECT INTO 不适用于 SQL Azure。
我正在寻找是否有可能在 AFTER 触发器开始执行之前检索一行,如果可以,在重负载下发生这种情况的可能性有多大?
我想知道执行语句和触发第一个 AFTER 触发器之间的时间延迟是多少。由于并发原因,在查询完成后,我将对 datetime2 字段进行简单更新。INSTEAD OF 触发器是我的首选,但 SELECT INTO 不适用于 SQL Azure。
我正在寻找是否有可能在 AFTER 触发器开始执行之前检索一行,如果可以,在重负载下发生这种情况的可能性有多大?
没有这样的延迟。触发器是事务/语句的一部分。
此外,您拥有包含更改数据的 INSERTED 和 DELETED 特殊表:无需在触发器中查询实际表
编辑
最后,如果列上有默认值,那么您可以使用它
UPDATE
SomeTable
SET
foo = ...,
bar = ...,
TheDateTime2Column = DEFAULT -- this
WHERE
...
没有预定义的延迟,但是如果您在两个地方调用 GETDATE(),您可能迟早会得到不同的结果,具体取决于硬件、数据量和触发器的复杂性。
为了确保您没有读取脏数据或不一致的数据,您应该根据您需要的数据访问类型明智地使用事务隔离级别。