DB にデータを保存する

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データベース >

DB にデータを保存する

このセクション:

 

ソリューションの進行状況をベースにして保存する
保存アクション
DB 実行アクション
保存する列をフィルターする
OriginalRowSet について
トランザクションをコミットする

 

 

ソリューションの進行状況をベースにして保存する

$DB ルートノードのコンテキストメニュには、ルートノードでのページソースの入れ替えをしソリューションの進行中の異なる時点で保存することを可能にする [データの保存] コマンドがあります (下のスクリーンショット)。 オプションは下に説明されています。デフォルトのオプションである [自動ではない] が選択されている場合、イベントの保存アクションがトリガーされるとデータが保存されます。

 

[データの保存] コマンドは、サブメニューのロールアウトで、(一度に 1 つのみ選択可能な) 次の相互に排他的なオプションを表示します :

MTDSaveDataContextMenu

すべてのページ移動時: ツリーのデータはツリーを含むページから移動する際保存されます。
ソリューションの完了時: ソシューションの状態、または終了方法に関わらず、ソリューションを完了するとツリーのデータは保存されます。
最後の送信時: ツリーのデータは、ワークフローの処理がデザインされたとおり、最初のページから最後のページまで、最後の [送信時] ボタンがタップされた時まで保存されます。もしこのオプションが選択されていて、ソリューションが最後の [送信時] ボタンがタップされる前に終了した場合、ツリーのデータは保存されません。
自動ではない: ツリーは自動的に保存されません。 保存ファイルに保存 、または HTTP/FTP をロード保存 アクションを使用してデータを保存します。

 

デフォルトの設定は、自動ではない。

 

 

 

保存アクション

保存アクションが定義されるページイベントまたはコントロールイベントがトリガーされると、 DB にデータを保存することができます。イベントの例としては、エンドユーザーが [送信] ボタンをクリックすることがあげられます。下のスクリーンショットでは、[送信] ボタンは Edit Offices Table バーにあります。

MTDDBCSimulatorEditOffices01Short

保存アクションはページ アクションまたはコントロール アクションで定義することができます。対応するアクション ダイアログには、すべてのアクション ダイアログ [ページ | アクションの概要] からアクセスすることができます。 下のスクリーンショットは、 送信ボタンのクリック時 イベントに対して定義されている保存アクションを持つページ アクション ダイアログを表示しています。

MTDDBCEditOfficesPageActions

メモ:DB に秘密キーがある場合、秘密キーは変更、追加、削除された記録のみを保存するために使用されます。 DB に秘密キーが無い場合、変更されたテーブル全体が、元のテーブルを置換、 DB に保存されます。

 

 

DB 実行アクション

DB 実行アクション は、 DB データを変更することのできる強力なメカニズムです。このアクションと SQL ステートメントを使用して、データを更新し保存することができます。このアクションの使用に関しては、[ページデザイン | データベース | DB 実行アクション]のセクションを参照してください。

 

 

保存する列をフィルターする

$DB ルートノードのコンテキスト メニューで、[列をフィルターする] コマンドを選択して[データベース列の保存設定] ダイアログを表示し (下のスクリーンショット参照)、更新または挿入する列を選択します。

 

MTDSaveDBColumns

ダイアログは、 DB ページソースのための列を表示します。その列が更新され、または、挿入された値を取ることができるかを指定することができます。 (更新は、既存の行要素内の変更されたデータを指します。挿入された値は、新規に追加された行要素を指します)。デフォルトでは、各列の挿入と更新のオプションはペアとして選択されます。ですが、 異なるオプションを列の挿入と更新オプションのために指定する場合、 挿入慮更新ステートメントのために個別のフィルター設定を使用するチェックボックスをチェックしてください。 DB のカラム内の NULL チェックボックスをチェックすることで、空の値を持つ属性は、内で NULL 値に変換されることができます。 不足する属性は常に NULL として保存できることに注意してください。

 

(ユーザーにより定義されているため、固定されているため、または計算されているため) 更新することのできない列は、挿入、更新またはオプションチェックボックスを使用することができません。  上のスクリーンショットでは、 固定値を持つため、ID 列は、更新されることができません。更新しない列の選択を解除します。 全ての列を更新するために、保存設定をリセットする場合は、[デフォルトにリセット] をクリックします。

 

OriginalRowSet について

データを編集し、保存するには、ツリーはページ ソースに、 RowSet 要素のコピーである OriginalRowSet 要素を含む必要があります。オリジナルのデータは OriginalRowSet 要素に保存され、編集されたデータは RowSet 要素に保存されます。データ ソースが保存されると、OriginalRowSetRowSet の 2 つのツリーの差異が計算され、ページソースは差異を基に更新されます。 修正に成功すると、修正されたデータは、OriginalRowSet にコピーされ、OriginalRowSetが新しく保存された DB データを含み、修正プロセスが繰り返すことができます。

 

ページソースの OriginalRowSet を作成するには、ページソースのルート ノードを右クリックして、コマンド [OriginalRowSet の作成] を切り替えます。

 

[OriginalRowSet の作成] コマンドは、データベース型 ($DB) ルート ノードのために有効化されています。ページソースの元のデータを含むデータ構造を作成/削除する切り替えコマンドです。 ユーザーにより修正されたデータはページソースにより作成されたメインの構造に保存されています。修正されたデータが DB に保存されると、 OriginalRowSet 構造は新たに DB に保存されたデータを含むために修正されます。これにより元の DB データはツリーで使用可能となります。

 

 

トランザクションをコミットする

データを DB に保存する他の方法は、独立したトランザクションを開始してコミットすることです。ページとコントロールイベント DB トランザクションはアクションとして使用することができます。

 

DB トランザクションについて

トランザクションが必要な各 DB アクセスには、自動的にトランザクションが作成され、後に自動的に閉じられます。これは一部のセットアップでは理想的です。例えば、同時に自動的に更新したい 2 つのDB ページソースが存在する場合、両方のテーブルが保存されると、トランザクションがコミットされます。その他の場合はロールバックされます。このようなシチュエーションに対応するために、接続ベースのトランザクションを作成することができます。

 

トランザクションの開始 が始まると、同じ DB 接続に属するすべての DB オペレーションはこのトランザクションを使用します。

 

トランザクションのコミット により、トランザクションの外界で変更が可視化されます。変更はロールバックされることができます。 この場合、ページソースに保存した場合でも、ロールバックの後で変更は可視化されません! 閉じられていない (コミットされたまたはロールバックされた) トランザクションは、アクション ツリーのが最後に到達すると自動的にロールバックされます! この効果についてメッセージ ウィンドウに警告が表示されます。

 

上記の振る舞いはトランザクション アクションについて参照していますが、振る舞いはトランザクションと同じ接続を使用するDB オペレーションにも適用されます。

 

 


(C) 2019 Altova GmbH