首页 >数据库 >mysql教程 >SQL 更新:'p = q”是否反映原始或更新的'q”值?

SQL 更新:'p = q”是否反映原始或更新的'q”值?

Barbara Streisand
Barbara Streisand原创
2024-12-26 21:32:10930浏览

SQL UPDATE: Does `p = q` Reflect the Original or Updated `q` Value?

SQL UPDATE 求值顺序

在 SQL UPDATE 语句中,表达式的求值顺序会对结果产生显着影响。让我们检查以下查询:

UPDATE tbl SET q = q + 1, p = q;

这里出现了问题:“tbl”.“p”会被设置为 q 或 q 1 吗?评估顺序是否受 SQL 标准管辖?

实现各不相同

尽管 SQL 标准缺乏明确性,但不同的数据库实现以不同方式处理评估顺序。测试显示 Firebird、InterBase、MySQL、Oracle、PostgreSQL、SQLite 和 SQL Server 之间存在不同的行为。大多数情况下,“p”的值设置为 q 1,表示从左到右评估。

标准解释

但是, SQL92 规范建议该标准旨在在更新任何行之前评估表达式。这将导致“p”被设置为 q。

MySQL 的独特方法

MySQL 脱颖而出,成为唯一经过测试的数据库,能够在评估。此行为与大多数其他实现不同,可能会导致意外结果。

结论

虽然 SQL 标准缺乏对计算顺序的明确指导,但通常假设在应用更新之前应该评估表达式。然而,实现各不相同,开发人员应该意识到潜在的差异。在评估顺序至关重要的情况下,建议使用中间变量来显式定义所需的操作顺序。

以上是SQL 更新:'p = q”是否反映原始或更新的'q”值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn