在DB2中删除未提交的插入行(V8.2.7-Fix14)

在DB2中删除未提交的插入行(V8.2.7-Fix14),db2,read-uncommitted,Db2,Read Uncommitted,应客户的请求,我被要求将web应用程序打开为“读取未提交”隔离级别(这可能是个坏主意…) 在测试隔离是否到位时,我插入了一行,但没有提交(DBVisualiser:@set autocommit off+停止与数据库的VPN连接),然后我开始针对未提交的插入测试我的应用程序 从MYTABLE中选择*,其中MY ID=“NON_COMMIT_INSERT_ID”和UR可以正常工作。现在我想“删除”这一行,我没有找到任何方法 更新:一段时间后(约30分钟),该行确实消失了。我想在自动发出回滚之前会有

应客户的请求,我被要求将web应用程序打开为“读取未提交”隔离级别(这可能是个坏主意…)

在测试隔离是否到位时,我插入了一行,但没有提交(DBVisualiser:@set autocommit off+停止与数据库的VPN连接),然后我开始针对未提交的插入测试我的应用程序

从MYTABLE中选择*,其中MY ID=“NON_COMMIT_INSERT_ID”和UR可以正常工作。现在我想“删除”这一行,我没有找到任何方法


更新:一段时间后(约30分钟),该行确实消失了。我想在自动发出回滚之前会有某种超时。在这种情况发生之前,有没有办法删除未提交的行?

我认为使用普通SQL语句是不可能的-删除该行的唯一方法是回滚插入该行的事务(或者等待tx提交,然后删除)。由于您已经在网络级别断开了与DB的连接,所以您所谈论的30分钟可能是操作系统级别强制执行的TCP超时。TCP连接终止后,DB2自动回滚客户机的事务


我仍然认为您可以从管理上强制应用程序断开与数据库的连接(使用从列表应用程序获得句柄的强制应用程序),这应该回滚事务,有关这些命令的详细信息,请参阅。

从数据库读取未提交的行是一回事。这样做有时有很好的理由(缺少读锁)

在数据库中保留插入、更新或删除的行而不进行提交或回滚是另一种选择。你不应该这样做。在数据库更改后提交或回滚