最近のアクセス:
[Commit on Exit] プロパティ
GeneXus は、トランザクションおよびプロシージャーごとにこのプロパティを提供します。このプロパティは、生成されたプログラムで自動コミットを実行するかどうかを定義します。
Yes 生成されたプログラムは、論理作業単位 (LUW) の最後にコミットを実行します。これが既定値です。
No 生成されたプログラムは、論理作業単位 (LUW) の最後にコミットを実行しません。
 

説明

GeneXus で生成される (Transaction オブジェクトと Procedure オブジェクトに関連付けられている) プログラムには、既定で COMMIT 文が含まれます。
  • プロシージャーの場合: 生成されたプログラム (ソースの最後) に自動コミットが含まれます。
  • トランザクションの場合: 生成されたプログラム (データベース内のデータの各インスタンスを変更 (挿入、更新、または削除) した後、AfterComplete トリガーイベントを含むルールに関連付けられているコードを実行する直前) に自動コミットが含まれます。たとえば、2 レベルのトランザクションを通して 5 つの請求書が挿入される場合、各請求書が格納された後、AfterComplete トリガーイベントを含むルールを実行する前にコミットが 5 回実行されます。
トランザクションまたはプロシージャーでコミットが実行されない理由
論理作業単位 (LUW) をカスタマイズする場合です。たとえば、複数のプロシージャー (または 1 つあるいは複数のプロシージャーを含む 1 つのトランザクション) が 1 つの論理作業単位 (LUW) を構成するように論理作業単位 (LUW) を拡張する必要がある場合です。

"X" トランザクションが "Y" プロシージャーを呼び出し、この 2 つのオブジェクトで 1 つの LUW を構成するとします。トランザクションは特定のレコードを更新し、プロシージャーはその他のレコードを更新します。操作のセット全体で 1 つの LUW を構成し、問題が発生した場合は、データベースで一部または全部の更新が実行されるようにします。
そのために、プロシージャーからコミットを削除して、トランザクションでコミットを実行するよう選択できます (プロシージャーからトランザクションに戻る場合)。この場合、プロシージャーの [ Commit on Exit ] プロパティの値を [ No ] に設定し、トランザクションの [ Commit on Exit ] プロパティの値を [ Yes ] (既定値) のままにします。 
イメージ:23353.png
ただし、トランザクションでコミットが実行される前に、必ずプロシージャーを呼び出してください (2 つのオブジェクトで 1 つの LUW を構成する必要があるため)。したがって、プロシージャーから戻ったら、トランザクションでコミットを実行する必要があります。そのため、コミットの前に発生するトリガーイベント (要件および単一レベルと複数レベルのどちらのトランザクションかによって、トリガーイベントは AfterInsert、AfterUpdate、AfterLevel Level 2ndLevel Attribute、BeforeComplete のいずれかになります。AfterComplete ではありません) を含むプロシージャーの呼び出しをトランザクションで定義する必要があります。
LUW はカスタマイズできません。どのオブジェクトがコミットを実行するか (複数の可能性があります) を分析し、オブジェクトが選択されたら、コミットが実行されるかどうかに応じて呼び出しに適したタイミングを判断することが重要です。
重要な制限事項
Web 環境の場合、各トランザクションは、そのトランザクション (およびトランザクションが呼び出すプロシージャー) がデータベースに対して行う操作のセットだけをコミットできます。別のトランザクションが行う操作はコミットできません。つまり、トランザクションが別のトランザクションを呼び出す場合、その一方が実行するコミットは、もう一方が挿入、変更、または削除したレコードに適用されません。そのため、2 つの異なるトランザクションを同じ LUW に含めることはできません。
2 つの異なるトランザクションを使用して操作を実行する必要があり、それらのトランザクションで 1 つの LUW を構成したい場合は、ビジネスコンポーネントの概念を使用してトランザクションを実行し、2 つのトランザクションに関連付けられたすべての操作を実行した後に Commit コマンドを含めることができます。
 

このプロパティは、次のいずれかに該当する場合は無視されます。
  1. [ Commitment ] プロパティの値が [ Disabled ] のトランザクションであり、環境でこのプロパティがサポートされている場合。RPG ジェネレーターおよび COBOL for iSeries ジェネレーターがこの場合に当てはまります。
  2. トランザクションがビジネスコンポーネントとして使用される場合。つまり、トランザクションの [ Commit on Exit ] プロパティが [ Yes ] に設定されているかどうかにかかわらず、そのトランザクションをビジネスコンポーネントとして使用すると、コミットは自動的に実行されません。一方、Commit コマンドは明示的に実行する必要があります。その理由は、複数のトランザクション間で、実行する Commit コマンドを含む特定の LUW を構成できるようにするためです。
     

適用範囲

オブジェクト Procedure オブジェクトTransaction オブジェクト
言語 .NET、Java、Ruby、Visual FoxPro
   

 











サブページ
Created: 14/09/18 03:43 by Admin Last update: 18/11/04 20:18 by Admin
カテゴリ
Powered by GXwiki 3.0