<以下只为本人学习的一些笔记,仅作备忘用,如有错漏,也欢迎大家指正>
事务在并发执行时有可能产生脏读、不可重复读、幻读三种问题。这三种问题产生的原因归根到底都是事务没有按顺序执行导致的数据错乱。分别称为3种问题只是情形不一样,各自侧重的问题现象不一样而已。对于这3个概念这个文章总结得比较容易明白http://my.oschina.net/sansom/blog/121712
脏读:侧重于读到的数据是旧的。
不可重复读:侧重于在同一个事务里面重复读时数据不同。
幻读:侧重于由于读到的数据是旧的(也就是脏读)导致事务里的增删操作不成功。
在sqlite里面,事务的隔离级别都被设置成了最高的serializable,也就是可以防止事务的脏读幻读和不可重复读。也就是sqlite执行事务时都是使用表级锁。我们无需为sqlite的事务并发担忧,我们要做的只是将操作放进各自的事务中。
https://www.sqlite.org/isolation.html