在这种情况下会发生什么,假设col1
最初的值为10:
UPDATE myTable
SET col1 = 20,
col2 = col1 + 10
更新后col2
会是20还是30?
答案 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