聊聊更新表时的隐式提交
1、显式提交和隐式提交
显式提交是指在程序中使用明确的提交操作来提交数据到数据库。这可以通过使用语句COMMIT或COMMIT WORK来实现。显式提交是一种手动提交数据的方式,它将当前的数据库事务立即提交,使之成为永久性的更改。在显式提交之后,数据将立即被其他事务所见。
与显式提交相对的是隐式提交。在隐式提交中,数据的提交由系统自动处理,而无需明确的提交操作。本文档将通过一个简单的数据库更新操作,介绍各种场景的隐式提交。
"--------------------@斌将军-------------------- DATA:ls_091 TYPE ztsd0091. ls_091-werks = '1001'. MODIFY ztsd0091 FROM ls_091. IF sy-subrc EQ 0. ENDIF. "--------------------@斌将军--------------------
2、隐式提交场景
2.1、程序正常终止
如果程序没有报错正常执行完毕,系统将自动提交未提交的数据
如图所示,当程序被断点拦截,MODIFY并未将数据更新到自建表中
当执行完毕,数据更新到自建表
2.2、WAIT关键字
当遇到WAIT UP TO 1 SECONDS或WAIT UNTIL 这种操作,将执行提交
等待结束后,数据更新到自建表
2.3、MESSAGE
当弹出E、I、W类型消息时,将执行提交
弹出消息,数据更新成功
2.4、异步或远程调用RFC
2.4.1、STARTING NEW TASK 调用RFC
执行完毕,数据更新成功
2.4.2、远程调用RFC
调用结束,数据更新成功
2.4.3、同步调用RFC(不触发)
直接调用函数,不会触发提交
调用结束,数据并没有更新
2.4.4、IN BACKGROUND TASK调用RFC(不触发)
事务性异步调用,不会触发
调用结束,数据并没有更新
2.5、SUBMIT
当调用其他程序时
调用完毕,数据更新成功
2.6、CALL SCREEN
跳转到其他屏幕时
调用9000屏幕后,数据更新成功
2.7、数据库操作(不提交)
当更新1009数据到自建表,接着执行SELECT语句
SELECT能查询到更新的1009
但是数据并没有更新到数据库表中
以上就是对隐式提交的举例说明,希望对您有所帮助
定期更文,欢迎关注