本文介紹了使用HSQLDB進行悲觀行鎖的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我需要為連接顯式鎖定表中的一行:
讀入數據;
(中間會運行一些邏輯)
更新數據庫中的對應行;
當其他連接無法讀取數據時,禁用臟讀取(因此隔離級別是不成問題的)。
閱讀documentation,但不要完全理解它。我目前的理解正確嗎:
將并發控制模型設置為MVCC;
將事務隔離級別設置為”已提交讀”(實際上已經是默認設置);
將手頭的Connection對象的自動提交值設置為False;
CREATE語句/PreparedStatement;
對語句或PreparedStatement對象運行‘SELECT/–/FOR UPDATE’查詢并接收ResultSet;
-執行一些邏輯-
使用ResultSet updateX()方法或新的UPDATE SQL(ecuteUpdate())更新行。
提交更改。
是否有任何步驟是多余的、遺漏的或我完全誤解了整個概念?
推薦答案
執行此操作的正確方法是更新開頭和結尾的行。創建語句的步驟如下。
CREATE語句
用該行的現有值(或更改后的值,如果此時已知)更新該行
執行其他操作
使用更改的值更新行(如果以前未執行此操作)
提交
如果您不這樣做,則另一個事務可能會更改該行,此事務才能更改該行。
這篇關于使用HSQLDB進行悲觀行鎖的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,