2011-02-09 30 views
1

我努力學習交易DB是如何工作的,併爲此我寫了下面的測試SQL:如何獲取DB2上的當前隔離級別?

SAVEPOINT STOP_HERE ON ROLLBACK RETAIN CURSORS; 

INSERT INTO TESTSCHEMA."test" (ID, NAME) VALUES (89898, 'SDFASDFASD'); 

ROLLBACK TO SAVEPOINT STOP_HERE; 

SELECT * FROM TESTSCHEMA."test"; 

此代碼一行添加到表執行後。但是,如果我添加以下行開頭:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 

所有的工作如我所料,即交易正確回滾和DB沒有新的項目,但如果我運行這段代碼再次數據工作室顯示我的錯誤第一行:

[SQL0428] SQL statement can not be launched. 

所以我的問題是: 有沒有一種方法來獲得當前的隔離級別,爲什麼我不能設置隔離級別1倍多?

我會非常感謝所有的答案和鏈接。

PS。我正在使用DB2/iSeries V5R4。

PPS。對不起,我的英文不好

+0

您是否在每個set語句之後執行SQL COMMIT? – 2011-02-09 15:53:30

+0

不,只是在問題 – 2011-02-09 16:07:45

回答

1

您可能從特殊寄存器current isolation可能獲得當前隔離級別。你得到了SQL0428,因爲在設置隔離級別之前沒有COMMIT或ROLLBACK,並且該會話中還有一些事務正在進行。