在下面的语句中,f1
总是会得到f2
以前拥有的值吗?或者f2
有时会先更新并f1
结束NULL
?我的印象是新值在语句中不可用,f2
在处理记录时具有旧值,但我找不到一个权威的地方来说明这一点。
UPDATE x
SET
x.f1 = x.f2,
x.f2 = NULL
在下面的语句中,f1
总是会得到f2
以前拥有的值吗?或者f2
有时会先更新并f1
结束NULL
?我的印象是新值在语句中不可用,f2
在处理记录时具有旧值,但我找不到一个权威的地方来说明这一点。
UPDATE x
SET
x.f1 = x.f2,
x.f2 = NULL
f1
总是会f2
在UPDATE
.
从技术上讲,记录被删除,然后重新插入。所以 SQL 会计算出新记录应该是什么,然后删除当前记录,然后插入新记录。
这篇关于 SQL 触发器的文章可能有助于解释:
删除的表在 DELETE 和 UPDATE 语句期间存储受影响行的副本。在执行 DELETE 或 UPDATE 语句期间,行会从触发器表中删除并转移到已删除的表中。删除的表和触发器表通常没有共同的行。
插入的表在 INSERT 和 UPDATE 语句期间存储受影响行的副本。在插入或更新事务期间,新行会同时添加到插入表和触发器表中。插入表中的行是触发器表中新行的副本。