gpt4 book ai didi

sql - 顺序更新语句

转载 作者:行者123 更新时间:2023-12-01 13:34:51 26 4
gpt4 key购买 nike

在像这样的单个更新查询上使用多个 SET 时

update table set col1=value1,col2=col1

当同一列在等号的左边或右边时,是否有决定结果的执行顺序?就我目前测试过的而言,似乎当一个列被用作数据源时,它的值在同一更新语句中获得新值之前被使用,方法是在其他地方等号的左边。

最佳答案

我相信 SQL Server 在执行 UPDATE 时总是使用旧值。这最好通过显示您的表的一些样本数据来解释:

col1 | col2
1 | 3
2 | 8
3 | 10

update table set col1=value1,col2=col1

在此 UPDATE 结束时,表格应如下所示:

col1   | col2
value1 | 1
value1 | 2
value1 | 3

UPDATE 的这种行为是 ANSI-92 SQL 标准的一部分,正如这个 SO 问题所讨论的:

SQL UPDATE read column values before setting

这是另一个通过示例讨论此问题的链接:

http://dba.fyicenter.com/faq/sql_server/Using_Old_Values_to_Define_New_Values_in_UPDATE_Statements.html

您可以假设通常 SQL Server 在 UPDATE 期间对表进行某种锁定,并在整个 UPDATE 语句中使用旧值的快照.

关于sql - 顺序更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com