首頁 >資料庫 >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