程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL-92隔離級別理解和測試

SQL-92隔離級別理解和測試

編輯:關於SqlServer

以前對數據庫的隔離級別,有所了解,但不知道真正其中的區別。今天就討論一下這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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved