SQL:更新列并在同一更新中引用这些列?

时间:2014-11-03 14:36:06

标签: sql sql-update

在这种情况下会发生什么,假设col1最初的值为10:

UPDATE myTable
SET col1 = 20,
    col2 = col1 + 10

更新后col2会是20还是30?

2 个答案:

答案 0 :(得分:2)

评论太长了。

根据标准SQL的规则,它将是20。在update语句结束之前,新值不会被提交。它们不是逐行或逐列提交的。记住数据库的ACID属性 - 所有更改同时生效。

有些数据库可能没有这种方式。在实践中检查很容易。

答案 1 :(得分:1)

该列将显示20

更新功能作为批量运行。

你可以做这个快速测试:

/* Create Test Table
select 
10 as col1,
0 as col2
into TestTable
*/

/* update 
update TestTable
set col1 = 20,
col2 = col1 + 10
*/

select * from TestTable