簡體   English   中英

HSQLDB的悲觀行鎖定

[英]Pessimistic row locking with HSQLDB

我需要為表中的連接顯式鎖定行:

  • 讀取數據;
  • (一些邏輯將在兩者之間運行)
  • 更新數據庫中的相應行;

盡管其他連接將無法讀取數據,但請禁用臟讀取(因此,ISOLATION級別是毫無疑問的)。

閱讀文檔 ,但不完全理解它。 我目前的理解正確嗎:

  • 將並發控制模型設置為MVCC;
  • 將事務隔離級別設置為READ COMMITTED(實際上已經是默認值);
  • 將手中的Connection對象的autocommit值設置為false;
  • 創建Statement / PreparedStatement;
  • 在語句或PreparedStatement對象上運行“ SELECT /-/ FOR UPDATE”查詢並接收ResultSet;
  • -執行一些邏輯-
  • 使用ResultSet updateX()方法或新的UPDATE sql(executeUpdate())更新行。
  • 提交更改。

是否有任何步驟是多余的,丟失的,還是我完全誤解了整個概念?

正確的方法是在開頭和結尾處更新行。 創建語句的步驟如下。

  • 創建語句
  • 用其現有值(或更改的值,如果現在知道的話)更新行
  • 執行其他操作
  • 用更改后的值更新行(如果之前未完成)
  • 承諾

如果您不像上面那樣做,則另一筆交易可能會更改該行,然后再更改該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM