簡體   English   中英

ABAP 中的自治事務模擬

[英]Autonomous transaction analogue in ABAP

我正在嘗試在主程序仍在運行而不提交的情況下在 db 表中提交 DML 更新,因為將來可能會出現錯誤,並且可能需要回滾它,但內部(保存的)更新應該保留。 就像在 Oracle 自主事務中一樣。

調用 function 開始新任務或提交並返回不起作用,因為它們會影響主事務。

有沒有辦法在不中斷主 LUW 的情況下啟動嵌套 DB LUW 並提交它?

我不知道用 OpenSQL 來做這件事的方法。 但是當您使用ADBC 框架時,class CL_SQL_CONNECTION的每個實例都在單獨的數據庫 LUW中運行。

我通常不建議使用 ADBC,除非你必須這樣做,因為:

  • 您現在正在將 SQL 語句編寫為字符串,這意味着您沒有編譯時語法檢查。
  • 您不能再將變量放入 SQL 代碼中。 (好吧,你可以,但你不應該這樣做,因為你可能正在以這種方式創建 SQL 注入漏洞)。 您需要使用statement->set_param傳遞所有變量。
  • 您現在正在編寫 NativeSQL,這意味着您可能會無意中編寫無法移植到其他數據庫后端的 SQL。

您可以創建單獨的 function 來保存您的更改,您可以調用您的 function 並啟動新的任務模式,如下所示。

  call function 'ZFUNCTION' starting new task 'SAVECHANGES'
   exporting
     param  = value.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM