修改功能,MySQL事物问题

场景模拟: 修改角色
现有角色表编号1,2,3
有一个用户有角色1,3 ( 修改角色1,新角色还是1,既点击修改后不操作)
修改功能设计:先删除用户旧角色,再查询用户角色表全部角色,对比新角色如果存在不操作,不存在新增角色。
问题:整个修改操作是一个事物,用户删除的旧角色,再事物没提交前未执行,查询角色表还存在,新增操作就不会执行,最后提交事物就只执行了删除旧角色操作(案例中,新旧角色相同)

利用mysql的事务隔离级别来做,在代码中,将放在一个代码块的执行逻辑拆成不同的方法模块,各个方法模块利用不同的spring事务注解中的不同隔离级别控制就可以解决