0

選択したテーブルだけをコミットすることはできますか?

私が抱えている問題は、プロセスによって更新されたテーブルが他にもあるかどうかわからないため、コミットでテーブルを更新しないようにしたいということです!

これは大量処理であり、プロセスの最後に (論理的に) コミットを呼び出します。

では、すべてではなく 1 つの特別なテーブルを更新する方法はありますか?

ケース: 私が使用しているような一括処理 Run は、最後に更新されます。

私たち/私のコードは、いくつかの機能を備えた単なる BAdI 実装です。特定のデータを取得するには、別のシステムにリクエストを行う必要があります。このリクエストは履歴ログに足跡を残すことができないため、システムに永続化しないようにリクエストをロールバックすることが厳密に必要です。

この要求は、作業項目のエントリに使用されます。したがって、1 量のデータ セットを処理してワーク アイテムを生成すると、このワーク アイテムは実行後にスローされるように登録されます。2度分のデータセットを処理し、他のシステムにリクエストを行うと、ロールバックする必要がありますが、最初の量のデータセットの作業項目エントリは削除されます (ロールバックされます)。

直接コミットでこれらの更新を行うことは可能でしょうか? ->いいえ。

内部テーブルで更新されるようにテーブルを管理し、実行の最後にそれらを更新することはできませんか? -> いいえ、それらのクラスは私たちに属していないためです。

実行の最後に単純にロールバックしないのはなぜですか? -> それらのクラスは私たちのものではありません。さもなければ、大量処理構造全体を変更する必要があります。

4

2 に答える 2

0

プログラマーとして、あなたは制御を持っており、何が更新されているかを知っている必要があります。コードを LUW に構造化すると、どのテーブルが更新され、どの時点で適切なロールバックを許可するエラーをキャッチするかを制御できます。したがって、commit ステートメントに関する具体的な回答は上記で示されていますが、プログラマーはステートメントをグループ化して同じことを達成できます。

後で.....

于 2014-05-25T15:28:19.277 に答える
-1

私の知る限り、コミットが呼び出された瞬間、そのコミットステートメントの前と最後のコミットの後のすべてのDMLがデータベースにコミットされます。したがって、コミット後にさらにコミットがある場合、それらはあなたのコミットの影響を受けず、もちろんロールバックの条件がない限り、あなたのコミットも彼らのコミットに影響を与えることはできません。

于 2014-05-24T11:25:10.650 に答える