SQL UPDATE 计算顺序
在 SQL UPDATE 语句中,计算顺序决定后续表达式是否依赖于修改后的值。本文探讨了查询中的求值顺序:
UPDATE tbl SET q = q + 1, p = q;
MySQL 求值顺序
在 MySQL 中,求值顺序是“从左到右”。这意味着在对“p”的赋值中,表达式“q 1”在“q”之前被求值。因此,tbl.p 在递增之前将被设置为 q 的值。
SQL 标准
根据 SQL92 规范,“[值表达式]在更新 T 的任何行之前对 T 的每一行进行有效评估。”但是,此声明并不明确。
实现和行为
尽管有标准,但实现的评估顺序有所不同。测试表明以下数据库将 tbl.p 设置为 q:
另一方面,以下数据库将 tbl.p 设置为 q 1:
MySQL 错误和文档更新
MySQL 之前违背了大多数行为,但出现了一个错误,并且更新了文档以明确反映“从左到右”的评估顺序。此行为被标记为与标准 SQL 的差异。
以上是SQL UPDATE语句求值顺序是否有标准,不同数据库如何处理?的详细内容。更多信息请关注PHP中文网其他相关文章!