[英]Commit for one table
是否可以仅对选定的表执行提交?
我遇到的问题是,我不知道该进程是否更新了更多表,因此我想防止通过提交更新它们!
这是批量处理,并且在过程结束时它会调用提交(逻辑上)。
那么有没有办法更新一个特殊的表而不是全部?
案例:一个批量处理 Run,就像我工作的那样,在它的最后更新。
我们/我的代码只是一个具有多个功能的 BAdI 实现。 要获取特定数据,必须向另一个系统发出请求,此请求不能在历史日志中留下任何足迹,因此必须将请求回滚,以免将其持久化到系统中。
此请求用于工作项条目。 因此,如果我处理 1 个数据集并生成一个工作项,则该工作项将被注册以在运行后抛出。 在处理2º数据集并向其他系统发出请求时,我必须回滚它,但将删除(回滚)第一批数据集的工作项条目。
是否可以通过直接提交进行这些更新? -> 没有。
我不能简单地管理表以使用内部表进行更新并在运行结束时更新它们吗? -> 不,因为那些课程不属于我们。
为什么我不简单地在运行结束时进行回滚? ->那些类不属于我们,否则整个批量处理结构必须改变。
作为程序员,您可以控制并且应该知道正在更新什么。 如果您将代码组织成 LUW,那么您可以控制正在更新哪些表,以及在什么时候捕获仍然允许适当回滚的错误。 因此,上面给出了专门关于提交语句的答案,但作为程序员,您可以将语句分组以完成相同的任务。
之后.....
AFAIK 在调用 commit 的那一刻,该 commit 语句之前和最后一次提交之后的所有 DML 都被提交到数据库。 因此,如果在您提交之后有更多提交,那么它们不会受到您的提交的影响,除非当然存在回滚条件,否则您的提交也不会影响他们的提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.