94.Oracle数据库SQL开发之 修改表内存——数据库事务的SERIALIZABLE事务

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/49976061

展示事务隔离性级别设置为SERIALIZABLE后的效果。

使用了两个事务:T1和T2。 T1使用默认的隔离性级别READ COMMITTED;而T2使用的隔离性级别为SERIALIZABLE。

T1和T2都将读CUSTOMERS表中的行,然后T1将向CUSTOMERS表中新插入一行,并修改该表中的一行记录。由于T2的隔离性级别是SERIALIZABLE,因此它并不能看到事务T1新插入的行或更新过的行,即使在T1提交所做的修改之后也是如此。因为读取新插入的操作是一次幻影读操作,而读取修改过的行的操作是一次不可重复读操作,这两种操作在SERIALIZABLE类型的事务中都是不允许的。