私はトランザクションがDBでどのように機能するかを学び、これを行うには、私が書いた次のテストSQLしようとしています:1行がテーブルに追加され、このコードの実行後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には新しいエントリが、私はこのコードを実行する場合は、再度Data Studioのは私の誤りでを示しているすべての作業最初の行:
[SQL0428] SQL statement can not be launched.
だから私の質問は以下のとおりです。 は、現在の分離レベルを取得するために、なぜ私は1時間より分離レベルの詳細を設定することはできませんが道ますか?
私はすべての答えとリンクのために非常に感謝するでしょう。
PS。私はDB2/iSeries V5R4を使用しています。
PPS。申し訳ありませんが私の悪い英語
は、あなたのセットの各ステートメントの後のCOMMITのSQLをやっていますか? –
いいえ、私はあなたのドライバーのために質問 –
の体内に掲載ちょうどSQL、してみてください[getDefaultTransactionIsolation()](http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzahh %2Fjavadoc%2Fcom%2Fibm%2Fas400%2Faccess%2FAS400JDBCDatabaseMetaData.html)。私は、DB2のhttp://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jspあなたは現在の分離レベルを取得する別の方法ですか私のバージョンに特殊レジスタCURRENT ISOLATIONを持っていない – user2338816