因为事务在执行过程中会将事务中用到的表和数据进行锁定,直到事务结束(提交或回滚),才会释放。
在很多用户都同时使用事务访问同一个数据资源的情况下,就会造成以下几种数据错误:
1、更新丢失:多个用户同时对一个数据资源进行更新,必定会产生被覆盖的数据,造成数据读写异常。
2、不可重复读:如果一个用户在一个事务中多次读取一条数据,而另外一个用户则同时更新啦这条数据,造成第一个用户多次读取数据不一致。
3、脏读:第一个事务读取第二个事务正在更新的数据表,如果第二个事务还没有更新完成,那么第一个事务读取的数据将是一半为更新过的,一半还没更新过的数据。
4、幻读:第一个事务读取一个结果集后,第二个事务,对这个结果集进行增删改操作,然而第一个事务中再次对这个结果集进行查询时,数据发现丢失或新增。
然而锁定,就是为解决这些问题的,它的存在使得一个事务对它自己的数据块进行操作的时候,而另外一个事务则不能插足这些数据块。这就是所谓的锁定。