Transactions 如何在DB2上获得当前隔离级别?

Transactions 如何在DB2上获得当前隔离级别?,transactions,db2,ibm-midrange,isolation-level,Transactions,Db2,Ibm Midrange,Isolation Level,我试图了解事务在DB中的工作方式,为此我编写了以下测试SQL: 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"; 执行此代码后,将一行添加到表中。但如果我在开头添加以下行:

我试图了解事务在DB中的工作方式,为此我编写了以下测试SQL:

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;
所有工作都如我所预期,即事务正确回滚,数据库中没有新条目,但如果我再次运行此代码,Data Studio会在第一行显示错误:

[SQL0428] SQL statement can not be launched.
因此,我的问题是: 有没有办法获得当前的隔离级别?为什么我不能将隔离级别设置超过1次

我将非常感谢所有的答案和链接

另外,我正在使用DB2/iSeries V5R4


PPS。对不起,我的英语不好

您可能可以从特殊寄存器获取当前隔离级别。您之所以会收到SQL提交,是因为您在设置隔离级别之前没有提交或回滚,并且该会话中仍有事务在处理中。

您是否在每个set语句之后执行SQL提交?不,只是我在问题正文中为您的驱动程序发布的SQL,试试看。在我的DB2版本中,我没有特殊的寄存器当前隔离。你有其他方法获得当前隔离级别吗?@Andriy Petrivsky我不相信有。。。大多数情况下,您会使用一些应用服务器和框架来为您跟踪这些事情……您是对的。我必须使用的驱动程序()确实有设置隔离级别的选项。谢谢。请原谅我@erloewe,但我注意到您了解DB2隔离级别,如果您知道这个问题的答案,我将非常感谢您的知识: