首先来看看数据一致性,很简单。

table1 不存在8884的记录,table2存在9999&9999的记录,
只是在最后的更新提交COMMIT WORK 和ROLLBACK WORK。
保证数据一致性。要么都成功,要么都失败。
以上是Insert table通过工作区来做的。如果sy-subrc不为0,还是可以继续执行的。
而对于Inserttable使用internal table,且internal table的数据已经在table里存在了,那么就down了。

现状是table1 已经有8884的数据,程序直接挂了。
另一个问题,

现状是Table已经有了8884的数据,没有1009的数据,
用了TRY CATCH后,是不会dump了。即便抓到了异常,但是1009的数据还是进去了。
但因为程序还要去抓已有的重复数据,输出到结果列表。所以, CATCH后的ROLLBACK WORK还是不可缺少。后面在用loop来一个个更新,抓去table已有的数据。如上图注释掉的数据。
本文探讨了在数据库操作中确保数据一致性的难点,特别是当遇到重复数据时如何避免系统崩溃,并通过使用TRYCATCH机制来捕获异常,同时讨论了如何在不影响现有数据的情况下回滚事务。
1834

被折叠的 条评论
为什么被折叠?



