关于在事务内部先插入再查询,是否可以查询到这条数据的一个思考?

  首先我先提出这么一个问题,不知道大家有没有思考过。

  例如在Spring Boot的业务层中,使用@Transactional注解开启事务,然后向数据库中插入了一条数据,随后查询这个表中所有的数据,你认为会不会查询到这条数据。

  我一开始理所当然的认为,事务开启后只要未提交,数据库并不会真正的写入这条数据,那一定查不到,其实并非如此。

  在同一个事务中,数据需要保证一致性,也就是说,在当前的事务中,这条数据删除了就是看不到了,插入了就是多了一条数据。

  但这些操作都是在当前事务内部的。对于外界是隔离的。如果我们开启事务时插入一条数据,还没有提交,这时新开一个事务,再去查询数据,是发现不了未提交数据的。

 

  有感兴趣的小伙伴可以自己试一试。

posted @ 2023-02-09 14:37  草莓罐头  阅读(3253)  评论(0编辑  收藏  举报