我需要以原子方式执行选择,然后更新 ResultSet
中的某些行。
我使用的代码如下(简化):
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT ...");
while (rs.next()) {
if (conditions_to_update) {
rs.updateString(...);
rs.updateRow();
}
}
- 我能保证更新操作是原子性的吗?如果不能,我该如何确保它是原子性的?
- 如果其他进程通过
updateRow()
修改了你正在更新的数据库行,会发生什么?有没有办法在ResultSet
中锁定这些行?