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