【发布时间】:2011-06-24 05:40:36
【问题描述】:
我正在尝试了解事务在 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。对不起我的英语不好
【问题讨论】:
-
您是否在每个 set 语句之后执行 SQL COMMIT?
-
不,只是我在问题正文中发布的 SQL
-
对于您的驱动程序,请尝试getDefaultTransactionIsolation()。
标签: transactions db2 ibm-midrange isolation-level