JDBCによる悲観ロックの落とし穴
提供: tknotebook
メインページ>コンピュータの部屋#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();