事務與鎖定 設定事務的隔離級別

2021-08-25 19:13:37 字數 1755 閱讀 4607

/*

可以使用set transaction isolation level語句來設定oracle事務隔離級別,其語句結構如下

set transaction isolation level

?? -chenzw 20110417 如何或得當前的transaction level?

*/--1、read committed事務隔離級別可以避免髒讀(read committed隔離級別下,不能看到尚未提交的資料,因此可以避免髒讀)

--2、read committed事務隔離級別可以產生不可重複讀(兩次查詢結果不一致就是不可重複讀,中間update並且commit)

--3、serializable事務隔離級別可以避免幻象資料(保證兩次查詢的結果集是準確的)

--視窗a

sql> set

transaction

isolation

level

serializable;

事務處理集。

sql> select * from emp;

empid empname empage

---------- -------------------- ----------

1 11111 27

3 11111 28

--視窗b

sql> insert

into emp values(3,'chenzz',28);

已建立 1 行。

sql> commit;

提交完成。

--視窗a

sql> select * from emp;

empid empname empage

---------- -------------------- ----------

1 11111 27

3 11111 28

sql> update emp set empname='0000' where empid=1;

update emp set empname='0000' where empid=1

*第 1 行出現錯誤:

ora-08177: 無法連續訪問此事務處理

--4、在read only事務隔離級別中不能使用dml操作

sql> set

transaction

read

only;

事務處理集。

sql> select * from emp;

empid empname empage

---------- -------------------- ----------

1 2222 27

3 11111 28

3 chenzz 28

sql> insert

into emp values(2,'chen',29);

insert

into emp values(2,'chen',29)

*第 1 行出現錯誤:

ora-01456: 不能在 read

only 事務處理中執行插入/刪除/更新操作

設定MySQL事務隔離級別

select tx isolation 檢視隔離級別 set transaction isolation level read uncommitted 設定讀未提交級別 start transaction 開啟事務 rollback 回滾 commit 提交 set transaction isol...

事務隔離級別isolation設定

乙個事務讀取到另乙個事務中未提交的資料,另乙個事務中資料可能進行了改變,此時a事務讀取的資料可能和資料庫中資料時不一致的,此時認為資料是髒資料,讀取髒資料的過程就叫做髒讀。1.主要針對的是某行資料 2.主要針對的操作是修改操作 3.兩次讀取在同乙個事務內 當事務a第一次讀取事務後,事務b對事務a讀取...

事務的隔離級別舉例 事務的隔離級別

乙個事務是乙個完整的業務邏輯單元,不能再分,要麼全部執行成功,要麼全部失敗。比如 a給b轉賬100元,a的銀行卡就會少100元,b的銀行卡就會多100元,整個過程要麼全部執行成功,要麼全部失敗。a 原子性。事務是最小的業務邏輯單元。b 一致性。乙個事務必須保證多條dml語句同時成功或失敗。c 隔離性...