首页 > 数据库 > mysql教程 > SQL UPDATE语句求值顺序是否有标准,不同数据库如何处理?

SQL UPDATE语句求值顺序是否有标准,不同数据库如何处理?

Barbara Streisand
发布: 2024-12-27 05:05:12
原创
843 人浏览过

Does SQL UPDATE Statement Evaluation Order Follow a Standard, and How Do Different Databases Handle It?

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:

  • Oracle XE (10g)
  • PostgreSQL 8.4.2
  • SQLite 3.3.6
  • SQL Server 2016

另一方面,以下数据库将 tbl.p 设置为 q 1:

  • Firebird 2.5
  • InterBase 2009
  • MySQL 5.0.77

MySQL 错误和文档更新

MySQL 之前违背了大多数行为,但出现了一个错误,并且更新了文档以明确反映“从左到右”的评估顺序。此行为被标记为与标准 SQL 的差异。

以上是SQL UPDATE语句求值顺序是否有标准,不同数据库如何处理?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板