2

我正在尝试了解事务在 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 次?

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

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

聚苯乙烯。对不起,我的英语不好

4

1 回答 1

1

您可能可以从特殊寄存器current isolation获得当前隔离级别。您得到SQL0428是因为您在设置隔离级别之前没有 COMMIT 或 ROLLBACK,并且该会话中仍有事务在处理中。

于 2011-02-09T19:54:45.680 回答