Lor*_*tté 5 sql standards sql-update semantics
我在搜索引擎优化和谷歌搜索了这些信息,但没有找到任何权威的答案.
如果您有更新语句,例如:
UPDATE table SET rowA = rowB, rowB = NULL ...
Run Code Online (Sandbox Code Playgroud)
看起来:
UPDATE table SET rowB = NULL, rowA = rowB
)我想知道以上两点对于SQL 是否正确,即它们是否是SQL UPDATE语义的一部分,如果它们在标准中,或者它是实现细节(因此可能会发生变化).谢谢!
编辑:让我强调我想要一个"权威"的答案; 我已经在一些SQL实现上测试过,行为确实是这里描述的行为.我需要的是一个"证据",它实际上是UPDATE的SQL标准/规范/语义,带有标准的链接,或者代替可靠的源(MSDN,dev.mysql.com,Oracle或PostgreSQL) docs,...)
James R. Groff,Paul N. Weinberg:SQL完整参考(Osborne 1999),第209页
开始报价
如果分配列表中的表达式引用目标表的列之一,则用于计算该表达式的值是应用任何更新之前当前行中该列的值 。WHERE子句中出现的列引用也是如此。例如,考虑以下(有些人为的)UPDATE语句:
UPDATE OFFICES
SET QUOTA = 400000.00, SALES = QUOTA
WHERE QUOTA < 400000.00
Run Code Online (Sandbox Code Playgroud)
在更新之前,Bill Adams的QUOTA
身价为$ 350,000,SALES
价值为$ 367,911。更新后,他的行的SALES
价值为$ 350,000,而不是$ 400,000。因此,SET子句中的分配顺序无关紧要。可以按任何顺序指定分配。
结束语
ANSI-92 SQL标准(X3H2-93-004)草案的第13.9章第6页第393页对此提供了支持,可在此处找到。
到目前为止,这是最独立于实现的,也是我能得到的最接近的。
X3H2-93-004的其他来源可在此处找到(第590页,项目15)
归档时间: |
|
查看次数: |
1599 次 |
最近记录: |