以下查询中的评估顺序是什么:
UPDATE tbl SET q = q + 1, p = q;
Run Code Online (Sandbox Code Playgroud)
也就是说,将"tbl"."p"被设置为q或q + 1?此处的评估顺序是否受SQL标准的约束?
谢谢.
在考虑了Migs的回答之后,我对我能找到的所有数据库进行了一些测试.虽然我不知道标准是什么,但实施方式各不相同.
特定
CREATE TABLE tbl (p INT NOT NULL, q INT NOT NULL);
INSERT INTO tbl VALUES (1, 5); -- p := 1, q := 5
UPDATE tbl SET q = q + 1, p = q;
Run Code Online (Sandbox Code Playgroud)
我发现的价值"p"和"q"分别为:
database p q
-----------------+---+---
Firebird 2.1.3 | 6 | 6 -- But see …Run Code Online (Sandbox Code Playgroud) 我看了一下这个问题:sql swap主键值
所以我得到了以下脚本:
UPDATE t, t as t2
SET t.id = t2.id, t2.id = t.id
WHERE t.id = 1 AND t2.id = 2
Run Code Online (Sandbox Code Playgroud)
但我无法将其转换为有效的SQL Server语法.
请帮我 :)
提前致谢!
foreign-keys ×2
database ×1
evaluation ×1
key ×1
oracle ×1
primary-key ×1
sql ×1
sql-server ×1
sql-update ×1
swap ×1