首頁 > 資料庫 > 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 中,求值順序是「從左到右」。這表示在「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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板