问题描述
需要批量更新一个字段值,update table set xxx=xxx+a where a=? and b=? a b有索引,还有另外一个主键索引
会有并发的情况,可以不考虑事务回滚
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
public void test(List list){
for (Object o : list) {
update table set xxx=xxx+a where a=? and b=?
}
}
这个方法在不加事务注解情况下,在并发执行时,xxx字段,在我理解是不会有脏数据的吧?
但是有可能会跟其他update语句产生死锁对吗?
字段a、b都有索引的话,这个更新不会锁整张表(只会锁住更新的那一行数据),产生死锁需要有静态条件,比如:
这时,就有可能产生死锁了...