1

聊聊更新表时的隐式提交 - 斌将军

 7 months ago
source link: https://www.cnblogs.com/BinGeneral/p/17999786
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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并未将数据更新到自建表中

1225252-20240131164042001-653959678.png

当执行完毕,数据更新到自建表

1225252-20240131164309806-1764339571.png

2.2、WAIT关键字

当遇到WAIT UP TO 1 SECONDS或WAIT UNTIL 这种操作,将执行提交

1225252-20240131172040586-439911592.png

等待结束后,数据更新到自建表

1225252-20240131172110574-997340997.png

2.3、MESSAGE

当弹出E、I、W类型消息时,将执行提交

1225252-20240131172143442-1465314916.png

弹出消息,数据更新成功

1225252-20240131172207393-703905682.png

2.4、异步或远程调用RFC

2.4.1、STARTING NEW TASK 调用RFC

1225252-20240131172416829-1799549276.png

执行完毕,数据更新成功

1225252-20240131172443931-1515865270.png

2.4.2、远程调用RFC

1225252-20240131172623882-281206505.png

调用结束,数据更新成功

1225252-20240131172659346-2100253252.png

2.4.3、同步调用RFC(不触发)

直接调用函数,不会触发提交

1225252-20240131172259779-1418110504.png

调用结束,数据并没有更新

1225252-20240131172342984-1494880427.png

2.4.4、IN BACKGROUND TASK调用RFC(不触发)

事务性异步调用,不会触发

1225252-20240131172526244-745058430.png

调用结束,数据并没有更新

1225252-20240131171940905-1491391139.png

2.5、SUBMIT

当调用其他程序时

1225252-20240131172831959-2075509729.png

调用完毕,数据更新成功

1225252-20240131172944715-1794267579.png

2.6、CALL SCREEN

跳转到其他屏幕时

1225252-20240131173047154-1010412449.png

调用9000屏幕后,数据更新成功

1225252-20240131173134413-580613989.png

2.7、数据库操作(不提交)

当更新1009数据到自建表,接着执行SELECT语句

1225252-20240131173303852-1829654951.png

SELECT能查询到更新的1009

1225252-20240131173424430-57990416.png

但是数据并没有更新到数据库表中

1225252-20240131173552927-1656373688.png

以上就是对隐式提交的举例说明,希望对您有所帮助

定期更文,欢迎关注

1225252-20221117104655486-626157382.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK