モデルをまたがる計算(トランザクション)スクリプト前へ9101112131415161718...次へモデルをまたがる計算は「トラザクション」となります。ここではトランザクションスクリプトの作成方法を説明します。値を変更する例を説明します。このため、「商品在庫」の主キーは、「商品」を参照するようにしています。ここではトランザクション系である「出庫伝票」に注目します。このモデルの新規登録処理で、商品在庫を同時に変動させる必要があります。商品在庫を超える出庫要求については、エラーを返すようにします。商品在庫マスタモデルに、図2に示す初期データを設定しました。それぞれ在庫数を100としています。出庫伝票を作成します。指定商品を一つ、出庫します。出庫伝票が作成されました。このタイミングでトランザクション処理が正常に終了しています。出庫伝票作成時にトランザクション処理も動作している商品在庫マスタを確認します。在庫が減じられていることがわかります。在庫が減じられているエラー時の扱い在庫数を超える数を出庫しようとするとエラーメッセージを返すようにしました。(図6)この場合はデータベースの値は書き変わりません。図1に示した4つのモデルを定義します。定義した4つのモデル倉庫マスタ倉庫IDと倉庫名、倉庫の管理者を定義しました。倉庫マスタ商品マスタ商品ID、商品名、単価を保持します。一つの倉庫に紐付けられます。主キー「商品」項目は、順序を使わない設定としてください。商品在庫マスタ出庫伝票どの商品をいくつ出庫したかを記録します。出庫伝票ここで商品の出庫数に合わせて、商品在庫マスタの在庫数量を減らすために、モデル参照項目「商品」にトランザクションの設定を行います。(図12)ここでは、新規登録時に「在庫」モデルと連動する指定を行います。トランザクション設定モデル名を明記しているのは、今回のケースにおいては(参照先のモデルが)「商品」ではなく「商品在庫」となっているためです。関係にあり、「商品在庫」の主キーは、「商品」の主キーと同じという関係としています。参照先モデルがそのままトランザクション処理の対象モデルに等しい場合は、モデル名を空白とすることもできます。本欄が空白の場合は、参照モデル名が利用されます。コピー登録のチェックを行ったとき)は、ビルド処理を行ってください。一度設定したあとは、ビルド処理は不要です。トランザクションスクリプトの変更は即座に反映されます。実際のトランザクション処理コード(トランザクションスクリプト)は、図12における「トランザクション制御時のスクリプト」欄に記述します。このコードはトランザクション境界の中で実行されます。出庫しようとしました。命令で一つの戻り値を返すようにします。場合は正常と扱われます。いずれかを指定します。それぞれのタイミングでトランザクションスクリプトを記述できます。登録処理とコピー登録処理の区別はありません。定数を用いて判別することができます。これは画面種別を返すSCREENTYPE関数の値を保持しています。新規登録時とコピー登録時は同じスクリプトファイルが呼ばれますが、コピー登録時は処理しないような制御を行う例を示します。繰り返しコンテナ内の項目にトランザクションを指定することができます。図14は、出庫伝票の明細で、複数の商品を同時に指定する例です。出庫伝票に明細を(繰り返しコンテナとして)用意する同時に複数のデータが書き換えられていることがわかります。図11の出庫伝票の定義を変更し、明細を用意しました。明細を用意した出庫伝票の定義トランザクションスクリプトの変更ファイル名やファイルの保存位置は変わりません。このとき、複数の繰り返しコンテナのデータ毎に、このスクリプトが実行されます。(図16では3つの明細データがあったため、各データ単位でこのスクリプトが合計3回、実行されます。利用可能になっている。これは定義ファイル「トランザクション指定」に含めたモデルである。繰り返しコンテナも利用できる。いう名前のオブジェクトが用意されている。出庫しようとしました。null;外部キー子モデルとの連携Wagbyの外部キー関係では、一つの親データが複数の子データを管理できます。