今天看生产日志,发现了很不可思议的问题,一个很简单的Java方法中居然出现了ORA-00060,要知道在这个方法中只有一个更新的SQL,怎么可能产生死锁呢?
伪代码如下:
@Transactional(rollbackFor=Throwable.class)
public void function1(){
///1、根据查询条件查询该数据a
///2、其他判断逻辑,无其他SQL
///3、根据id更新改数据a
}
这个方法的业务逻辑很简单,页面上对某条数据进行收藏和取消收藏的操作(点一下收藏,再点一下取消收藏)
该方法为Controller直接跳转进来的,总共只有30行代码,但就在第三步更新数据的时候报了ORA-00060的错误,真的很奇怪,什么样的操作会报这个错误?
Spring
Java
Oracle
多个线程在操作同一条数据,死锁正常吧。
并发死锁不正常吗?
检查一下,是否存在其他的业务代码有干预同一条数据。
并发情况,线程安全问题