ホームページ > データベース > mysql チュートリアル > SQL UPDATE ステートメントの評価順序は標準に従っていますか? さまざまなデータベースはそれをどのように処理しますか?

SQL UPDATE ステートメントの評価順序は標準に従っていますか? さまざまなデータベースはそれをどのように処理しますか?

Barbara Streisand
リリース: 2024-12-27 05:05:12
オリジナル
839 人が閲覧しました

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 では、評価順序は「左から右」です。これは、式「q 1」が「p」への代入において「q」より前に評価されることを意味します。したがって、tbl.p は、インクリメントされる前に q の値に設定されます。

SQL 標準

SQL92 仕様によれば、「[値式] T の行を更新する前に、T の各行に対して効果的に評価されます。」ただし、このステートメントは明示的に明確ではありません。

実装と動作

標準にもかかわらず、実装の評価順序は異なります。テストでは、次のデータベースが tbl.p を q に設定することが示されました:

  • Oracle XE (10g)
  • PostgreSQL 8.4.2
  • SQLite 3.3.6
  • SQL サーバー2016

一方、次のデータベースは tbl.p を q 1 に設定します:

  • Firebird 2.5
  • InterBase 2009
  • MySQL 5.0.77

MySQL のバグとドキュメントの更新

MySQL は以前は大部分の動作に反していましたが、バグが発生し、明示的に反映するためにドキュメントが更新されました。 「左から右」の評価順序。この動作は、標準 SQL との違いとしてマークされています。

以上がSQL UPDATE ステートメントの評価順序は標準に従っていますか? さまざまなデータベースはそれをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート