MySQL 8.4 發行說明
MySQL 允許您同時使用允許回滾的交易式表格和不允許回滾的非交易式表格。因此,MySQL 中的約束處理方式與其他資料庫管理系統略有不同。我們必須處理當您在非交易式表格中插入或更新大量資料列時,發生錯誤導致變更無法回滾的情況。
基本的原則是,MySQL 伺服器會嘗試針對它在解析要執行的陳述式時可以偵測到的任何問題產生錯誤,並嘗試從執行陳述式時發生的任何錯誤中恢復。我們在大多數情況下都會這樣做,但尚未涵蓋所有情況。
當發生錯誤時,MySQL 的選項是在中間停止陳述式,或盡可能從問題中恢復並繼續。預設情況下,伺服器會遵循後者的方式。例如,這表示伺服器可能會將無效的值強制轉換為最接近的有效值。
提供多個 SQL 模式選項,以便更精確地控制處理錯誤資料值的方式,以及在發生錯誤時要繼續執行陳述式還是中止執行。使用這些選項,您可以將 MySQL 伺服器設定為以更傳統的方式運作,類似於其他會拒絕不正確輸入的資料庫管理系統。SQL 模式可以在伺服器啟動時全域設定,以影響所有用戶端。個別用戶端可以在執行時設定 SQL 模式,讓每個用戶端都能選擇最適合其需求的行為。請參閱 第 7.1.11 節,「伺服器 SQL 模式」。
以下章節說明 MySQL 伺服器如何處理不同類型的約束。