问题描述需要批量更新一个字段值,updatetablesetxxx=xxx+awherea=?andb=?ab有索引,还有另外一个主键索引会有并发的情况,可以不考虑事务回滚相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)publicvoidtest(Listlist){for(Objecto:list){updatetablesetxxx=xxx+awherea=?andb=?}}这个方法在不加事务注解情况下,在并发执行时,xxx字段,在我理解是不会有脏数据的吧?但是有可能会跟其他update语句产生死锁对吗?
2 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
updatetablesetxxx=xxx+awherea=?andb=?字段a、b都有索引的话,这个更新不会锁整张表(只会锁住更新的那一行数据),产生死锁需要有静态条件,比如:操作A:updatetableasetxxx=xxx+awherea=1andb=1updatetablebsetxxx=xxx+a...操作B:updatetablebsetxxx=xxx+a...updatetableasetxxx=xxx+awherea=1andb=1这时,就有可能产生死锁了...
添加回答
举报
0/150
提交
取消