我遇到有关for update
查询的问题。我有以下两种方法:
第一个选择行并返回包含主键和值的映射。
public Map<String,String> method1() throws SQLException {
String sql = "select * from table where col1='someValue' for update";
// ... do something and construct map, so map contains {colName, value}
return map;
}
第二种方法从第一种方法获取地图,然后根据地图的值更新行。
public boolean method2(String pk){
String sql = "update tableName set value = 1234 where primaryKey = pk";
// ... execute query and return boolean of if row affected
return booleanValue;
}
在第三种方法中,将执行方法1和2。
public void method3(){
// execute method1, get value from map
method1();
// some other operations need to be done here...
// pass value to method2 and execute
method(value);
}
我做了一些研究,发现有些帖子说使用for update
不应打开交易太长时间。
我的问题是:我应该分别进行select..for update
和实际更新吗?