「JDBCによる悲観ロックの落とし穴」の版間の差分

提供: tknotebook
移動: 案内検索
(ページの作成:「Category:コンピュータCategory:Java メインページ>コンピュータの部屋#Java>Java Tips JDBCを使って悲観ロックでレ...」)
 
14行: 14行:
 
  s.executeUpdate(String.format("update account set balance=%d where name='A'", balanceA - 100));
 
  s.executeUpdate(String.format("update account set balance=%d where name='A'", balanceA - 100));
 
  logger.debug("update A");
 
  logger.debug("update A");
 
+
 
  conn.commit();
 
  conn.commit();

2016年7月30日 (土) 03:04時点における版

メインページ>コンピュータの部屋#Java>Java Tips


JDBCを使って悲観ロックでレコードを更新するとき、たまにこんなコードを見かけます。

rsA = s.executeQuery("select name, balance from account where name='A' for update");
if (rsA.next()) {
    balanceA = rsA.getInt("balance");
    logger.debug("balanceA = " + balanceA);
} else {
    throw new Exception("行がありません");
}
s.executeUpdate(String.format("update account set balance=%d where name='A'", balanceA - 100));
logger.debug("update A");

conn.commit();