SQL多次更新同一行

时间:2013-06-24 16:35:46

标签: sql-server sql-update

我们可以考虑对同一行进行多次更新的必要性的一个例子:

create table t ( c1 int );
insert into t (c1) values (1);
insert into t (c1) values (2);
insert into t (c1) values (3);

update x1
set x1.c1 = X2.new
from t as x1
inner join
(
    select 1 as c1, 100 as new 
    union sel 1, 101
    union sel 1, 102
) as x2 on x1.c1 = x2.c1

同一行有3个潜在的更新。连接结果集的行数是同一行的3倍。此行只访问过一次吗?如何计算最终值?

1 个答案:

答案 0 :(得分:4)

从更新documentation

  

在指定FROM子句时要小心,以提供更新操作的条件。如果语句包含未以这样的方式指定的FROM子句,则UPDATE语句的结果是未定义的,即只有一个值可用于更新的每个列事件,即UPDATE语句不是确定性的。

在这种情况下,结果是不确定的。最好将这些SQL语句视为错误。