我尝试使用“已关闭”更新多条记录。列的值很少的地方的状态。
但是,它让我回头
Error code :-913, Error message :[SQL0913] Row or object BBT_00008 in BB type *FILE in use.
这是我的代码
public void updateIdsStatus(boolean allIdCreated, List<String> ids) throws ClassNotFoundException, SQLException, BBException {
if(ids.size() > 0) {
Connection con = null;
PreparedStatement ps = null;
con = DBUtil.getConnection();
try {
String sql;
if (allIdCreated) {
logger.info("Updating the status of the ids as CLOSED");
sql = "UPDATE <table> SET STATUS = 'CLOSED' WHERE BBDIDNOPK IN ('"+StringUtils.join(ids, "', '") +"') ";
} else {
logger.info("Updating the status of the deals as NEW");
sql = "UPDATE <table> SET STATUS = 'NEW' WHERE BBDIDNOPK IN ('"+StringUtils.join(ids, "', '") +"') ";
}
logger.info("updateIdsStatussql :"+sql);
ps = con.prepareStatement(sql);
ps.executeUpdate();
} catch (SQLException e) {
logger.info(e.getErrorCode()+"-"+e.getMessage());
throw new BBException (e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.info(e);
} finally {
try{
if(ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
它打印的查询是
UPDATE <table name> SET STATUS = 'CLOSED' WHERE BBDIDNOPK IN ('abc34569sf', 'abc38511hu')
桌子锁定的原因是什么?
P.S:没有其他人在运行除我以外的代码&amp;没有人访问数据库(DB2)。答案 0 :(得分:1)
List<String> ids
来自哪里?
假设代码的另一部分中的SQL语句访问相同的行,那么它可能是您的锁源。
包括该代码......
没有它,一些建议