我想使用Spring的@Transactional注释来防止更新数据库记录时的并发性。隔离级别" Serializable"声称这样做,但我想了解这是否确实涵盖了我的使用案例以及这种隔离级别的完整后果。我没有使用JPA,我们已经使用乐观锁定(版本/时间戳列)进行长时间对话。
Update table X where id = 123
,那么只会在交易正在进行时记录123被锁定,还是整个表X?最后我们有一个更复杂的插入查询,其中id字段的自动增量不适合我们(不要问)。
@Transactional(Isolation = ????)
public String insertUser(User user){
Integer nextid = query(select id from table ids where tablename = user);
query(insert in tabel user using nextId);
query(update table ids set id = (nextId+1) where tablename = user);
}
我想禁止访问获取表="用户"的ID的记录。直到此交易完成。哪个隔离级别涵盖了这个?