以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别
下面是4个隔离级别,在SQL server 2005里的介绍:
READ UNCOMMITTED
指定语句可以读取已由其他事务修改但尚未提交的行。
READ COMMITTED
指定语句不能读取已由其他事务修改但尚未提交的数据。这样可以避免脏读。其他事务可以在当前事务的各个语句之间更改数据,从而产生不可重复读取和幻像数据
REPEATABLE READ
其他事务可以插入与当前事务所发出语句的搜索条件相匹配的新行。如果当前事务随后重试执行该语句,它会检索新行,从而产生幻读
SERIALIZABLE
范围锁处于与事务中执行的每个语句的搜索条件相匹配的键值范围之内。这样可以阻止其他事务更新或插入任何行
建立环境:
create table t_emp(id numeric(10)
,name varchar(10),
salary numeric(10,2));
插入数据:
insert into t_emp values(1,'jack',10000.50);
insert into t_emp values(2,'jack2',8000.50);
insert into t_emp values(3,'jack3',120000);
insert into t_emp values(4,'jack4',5000);
insert into t_emp values(5,'jack5',3000);
脏读
如果一个事务在提交操作结果之前,另一个事务可以看到该结果,就会发生这种情况
测试语句一:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDbegin tran select * from dbo.t_emp where id=1
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索insert
, 事务
, 其他
, 语句
, values
, 隔离
幻读
事务隔离级别、mysql事务隔离级别、事务的隔离级别、数据库隔离级别、spring 事务隔离级别,以便于您获取更多的相关知识。