Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2通过回滚在数据库中保存单个表_Db2_Rollback_Cobol_Db2 Luw - Fatal编程技术网

DB2通过回滚在数据库中保存单个表

DB2通过回滚在数据库中保存单个表,db2,rollback,cobol,db2-luw,Db2,Rollback,Cobol,Db2 Luw,db2中是否有任何方法可以在执行回滚时保存某些表的行,但是我们有一个要求,即我们需要保存1个表的行,同时让其他表回滚。因为您已经用COBOL标记,我假设您正在使用一个程序来执行插入/更新 回滚发生后,只需重新插入不想回滚的表 我认为没有办法满足你的要求。回滚总是回滚一个工作单元。不回滚该表的唯一方法是先执行插入或更新,然后提交该工作单元,然后执行所有可以回滚的操作 或者您可以使用我的第一个建议,如果您处于回滚状态,让程序重新插入/更新您想要的内容如果您能够使用全局临时表(创建的全局临时表或声明的

db2中是否有任何方法可以在执行回滚时保存某些表的行,但是我们有一个要求,即我们需要保存1个表的行,同时让其他表回滚。

因为您已经用COBOL标记,我假设您正在使用一个程序来执行插入/更新

回滚发生后,只需重新插入不想回滚的表

我认为没有办法满足你的要求。回滚总是回滚一个工作单元。不回滚该表的唯一方法是先执行插入或更新,然后提交该工作单元,然后执行所有可以回滚的操作


或者您可以使用我的第一个建议,如果您处于回滚状态,让程序重新插入/更新您想要的内容

如果您能够使用全局临时表(创建的全局临时表或声明的全局临时表),则可以使用“回滚时保留行”特性来定义这些临时表

这种“在回滚时保留行”对于诊断和其他目的很有用,但您需要注意可重启的批处理情况,并注意“with replace”选项的后果


但是,一般来说,如果您需要保存一些行,而其他行被回滚,则表明您的事务设计中存在缺陷-可能您需要有单独的事务(单独的工作单元)或不同的保存点。

您可以通过使用自主事务来做到这一点。这是您在存储过程定义中加入的一个特性。您只需在同一工作单元中调用一个自治过程,它将回滚的范围分开


您可以在log4db2中看到此功能的一个示例,在一个名为appender的组件中,它将消息记录到表中,即使存在回滚。或多或少您需要什么:

查看保存点-它们可能会有帮助。。。