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 に設定することが示されました:
一方、次のデータベースは tbl.p を q 1 に設定します:
MySQL のバグとドキュメントの更新
MySQL は以前は大部分の動作に反していましたが、バグが発生し、明示的に反映するためにドキュメントが更新されました。 「左から右」の評価順序。この動作は、標準 SQL との違いとしてマークされています。
以上がSQL UPDATE ステートメントの評価順序は標準に従っていますか? さまざまなデータベースはそれをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。