/*可以使用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 隔離性...