加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL-92隔离级别理解和测试

发布时间:2016-09-04 18:06:55 所属栏目:MsSql教程 来源:站长网
导读:以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别 下面是4个隔离级别,在SQL server 2005里的介绍: READ UNCOMMITTED
以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这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 UNCOMMITTED
begin tran
select * from dbo.t_emp where id=1

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读