0

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

我正在寻找是否有可能在 AFTER 触发器开始执行之前检索一行,如果可以,在重负载下发生这种情况的可能性有多大?

4

2 回答 2

3

没有这样的延迟。触发器是事务/语句的一部分。

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

编辑

最后,如果列上有默认值,那么您可以使用它

UPDATE
   SomeTable
SET
   foo = ...,
   bar = ...,
   TheDateTime2Column = DEFAULT -- this
WHERE
   ...
于 2013-05-03T12:08:11.507 回答
0

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

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

于 2013-05-03T20:21:03.887 回答