关于数据库更新的总结(LUW的小结)_SAP刘梦_新浪博客


总结
LUW有两种实现方式:DB LUW;SAP LUW。
DB LUW:上一个COMMIT WORK或者ROLLBACK处或者是程序开头处都有可能是当前DB LUW的开始,凡是能使进程发生中断的语句都能触发DB LUW的结束。
SAP LUW:将多个DB LUW捆绑在一起,在遇到COMMIT WORK(AND WAIT)或者是ROLLBACK WORK时执行DML语句。若无此标识,则SAP LUW不会随着程序的结束或者进程的中断而隐式的提交或者回滚
LUW其实现机制为将数据存储在更新表里,若发生提交操作,则会按照更新表里的INDEX值对数据依次进行操作。
显示的提交或者回滚操作优先级高于隐式的提交或者回滚操作。

最后还有个问题:
如果调用bapi后又有更新自荐表操作;
bapi里默认是in update task模式更新的
会令起一个更新进程
虽然调用bapi后可以根据return判断成功与否
但是存在一种极端风险
就是return虽然返回成功,但是更新进程真正执行的时候出错了
这个时候就会导致数据错误

如果想预防这种极端情况,两种方案:
1>更新自荐表的时候也用in update task :
(比如也用Function更新,建议用Function模式更新,不建议用form更新,然后加 on conmmit )
2>在调用bapi前,加一句 set update task local 
 然后更新完成自建表更新后,commit work,如果失败回滚
set update task local :具体可以看F1
作用是把当前的处理放在一个进程内
即bapi内的in update task 不再新起进程

在一个很小的范围内加这句话,commit后就失效了

欢迎关注订阅号:SAP学习记录 (SAPlearning )

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值