」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > SQL中什麼情況下交易不會自動回滾?

SQL中什麼情況下交易不會自動回滾?

發佈於2024-11-07
瀏覽:680

When is a Transaction Not Automatically Rolled Back in SQL?

自動事務回滾

問題圍繞著 START TRANSACTION 包含的 SQL 語句區塊中發生錯誤時交易的行為提交交易。 OP注意到,當COMMIT TRANSACTION語句之前遇到語法錯誤時,交易會自動回滾。

事務回溯機制

不,交易不會回溯遇到錯誤立即回傳。然而,某些客戶端應用程式可能會採用特定的錯誤處理策略。

例如,在mysql命令列客戶端中:

  • 執行過程中通常會出現錯誤停止執行程序並導致退出客戶端。
  • 事務正在進行時退出會自動導致事務回滾。

當自訂回滾策略

建置自己的應用程式時,您可以控制交易回溯策略。但是,請注意,有強制回滾的例外情況:

  1. 客戶端斷開連線:退出或中斷與資料庫的連線總是會啟動交易回滾。
  2. Deadlock/Lock-Wait Timeout:當發生死鎖或鎖等待逾時時,會發生隱式回滾。

對於所有其他場景,如果在事務期間遇到錯誤,返回錯誤,開發者可以選擇提交或放棄該交易。

版本聲明 本文轉載於:1729746768如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3