X++ を学習していますが、2 つの質問があります。
の有用性がわかりませんttsbegin and ttscommit
! どこで使用する必要があり、ユーティリティは何ですか?
X++ 標準: ttsBegin および ttsCommit AX 2012
この演算子「~」の効用は何ですか?
X++ を学習していますが、2 つの質問があります。
の有用性がわかりませんttsbegin and ttscommit
! どこで使用する必要があり、ユーティリティは何ですか?
X++ 標準: ttsBegin および ttsCommit AX 2012
この演算子「~」の効用は何ですか?
ドキュメントから:
ttsBegin
: トランザクションの開始を示します。これにより、データの整合性が保証され、トランザクションが終了するまで (ttsCommit
またはによってttsAbort
) 実行されるすべての更新が一貫している (すべてまたはなし) ことが保証されます。
ttsCommit
: トランザクションが正常に終了したことを示します。これでトランザクションが終了し、コミットされます。MorphX は、コミットされたトランザクションが意図に従って実行されることを保証します。
ご了承ください
通常は、代わりに例外処理を使用することをお勧めします
ttsAbort
。throw ステートメントは、現在のトランザクションを自動的に中止します。
これは、トランザクションを開始しttsBegin
て終了するttsCommit
(成功した場合) か、例外をスローする (トランザクションが失敗した場合) ことを意味します。ドキュメントからは不明ですが、トランザクションはアプリケーション テーブルの操作を意味します。
アプリケーション テーブルでの読み取りまたは更新操作が、同時に発生する他のテーブル操作によって矛盾しないようにする場合に使用します。
同じリンクで例を参照してください。
~
演算子はビット単位ではなく、整数の各ビットを反転します。たとえば、(32 ビット整数を想定): ~0
is FFFFFFFF
(各ビットが現在 1)、~4
is FFFFFFFB
(16 進表現)。
テーブル内のデータにアクセスするときにttsbeginを使用すると、DBへのトランザクションが発生することがシステムに通知されます。
データを連続して更新/保存する場合は、ttscommitを呼び出す必要があります。そうしないと、変更は元の値に戻ります。これは、C#/ VBでデータセットを使用する場合と同様に、すべての変更をコミットするようにデータセットに指示する必要があります。データベース。
ttsbeginはBEGINSQLステートメントに似ており、ttscommitはCOMMITSQLステートメントに似ています。
それらを一緒に使用する必要があります:
ttsbegin;
'ここにコードを追加して、データを取得し、データを操作します'
ttscommit;
あなたはttsbeginsとttscommitsをネストすることを声に出していますが、1つのttsbeginを閉じないことは多くのことを台無しにする可能性があるため、上記を複数回使用することに注意してください。
'〜'については、Axapta(Microsoft Dynamics AX)の2年間のX++コーディングでこれまで使用したことがありません。