你想看看事务隔离级别:
隔离是在数据库级别通常被定义为定义如何/当由一个操作所做的更改成为对其他可见的属性。
有4个隔离级别。他们可能取决于你所使用的数据库上,但他们很可能这些:
序列化
这是最高的隔离级别。
对于基于锁的并发控制DBMS实现,可序列化需要读取和写入锁(在选定数据上获取)在事务结束时释放。当SELECT查询使用范围内的WHERE子句时,还必须获取范围锁,特别是为了避免幻像读取现象(见下文)。
使用基于非锁的并发控制时,不会获取锁;但是,如果系统在几个并发事务中检测到写冲突,则只允许其中一个事务提交。有关此主题的更多详细信息,请参阅快照隔离
重复读取
在该隔离电平,基于锁的并发控制DBMS实施不断读锁和写锁(在选定数据中获取),直到该事务的结束。但是,范围锁不受管理,因此可能发生幻像读取。
读取已提交
在这种隔离级别,一个基于锁的并发控制的DBMS实现保持写锁(在所选数据收购),直到交易结束,但读锁被很快释放的执行SELECT操作(因此,在此隔离级别中会发生不可重复读取现象,如下所述)。与前一级一样,范围锁不受管理。
简单来说,read committed是一个隔离级别,它保证读取数据时读取数据。它只是限制读者看到任何中间的,未提交的,“脏”的阅读。它不会承诺如果事务重新发布读取,它会找到相同的数据;数据读取后可以自由更改。
读未提交
这是最低的隔离级别。在这个级别中,允许脏读,因此一个事务可能会看到其他事务未做出的更改。
由于每个隔离级别比下面的隔离级别更强,因为没有更高的隔离级别允许较低级别禁止的操作,该标准允许DBMS以比所请求的更高的隔离级别运行事务(例如, “读取提交”事务实际上可以在“可重复读取”隔离级别执行)。
你想看看Serializable。来源:维基百科(在这里阅读更多:https://en.wikipedia.org/wiki/Isolation_(database_systems))。