[DB 実行] アクション (下のスクリーンショット参照) は DB データを修正するためのパワフルなメカニズムです。SQL ステートメントを使用してデータを挿入、削除、更新および保存することができます。これにより、ソリューションの進行中に SQL 言語のパワーをイベントが発生する際に使用することができます。
このセクションでは、 DB 実行 を使用してデータの挿入、更新、削除と保存方法について説明されます。DB データを変更するコマンドはアクションの SQL ステートメント内で指定されています。 (上のスクリーンショットを参照してください)。DB 実行アクションの設定の詳細に関してはページデザイン > アクション > データベース > DB 実行を参照してください。 DB 実行の SQL ステートメントは、パラメータの使用を許可することにより、柔軟性を向上します。これらのパラメーターの値は、XPath 式により生成されます。詳細に関しては、 [DB 実行] アクションのセクションを参照してください。
DB データが、アクションが定義されているページと同じページで表示されている場合、再ロードアクションを使用して変更された DB の表示を更新することができます (上のスクリーンショット参照)。上のスクリーンショットでは、 $DB1 ツリーがデータベーステーブル OfficeSales_DB のルートノードです。INSERT ステートメントと共に、OfficeSales_DB が変更された後、デザインページの $DB1 ツリーは再ロードされ、このため、 DB への変更がすぐに反映されます。
SQL の INSERT ステートメントはデータベーステーブルに行を挿入するために使用することができます。INSERT INTO ステートメントは特定の値を持つ行を挿入するために使用されますが、 INSERT SELECT ステートメントは、 SELECT ステートメントの結果をテーブルに挿入する時に使用されます。SELECT INTO などの他の SQL ステートメントを使用して、テーブルに行を挿入することができます。
SQL の UPDATE ステートメントはデータベーステーブル内の行を更新するために使用することができます。UPDATE ステートメントには以下の 3 つのパートがあります:
•更新される DB テーブルの名前
•更新される列の名前とその値
•更新される行をフィルターする WHERE 句
SQL UPDATE ステートメントのサンプルは以下の通りです:
UPDATE [AltovaMobile_Offices]
SET [Office] = 'New York',
[Contact] = 'Altova Johnson'
WHERE [id] = 11;
このステートメントは、 id=11 を持つ行を更新します。例えば、 Office='USA' から Office='New York' へと Contact=NULL から Contact='Altova Johnson' へ更新するとします。下のスクリーンショットは、[DB 実行] アクション の SQL ステートメント設定内のこの UPDATE ステートメントのサンプルを表示しています。
以下の点に注意してください:
•更新される列は name=value の組み合わせにより与えられます。各、 name=value 組み合わせは次の組み合わせとカンマで区切られています。
•最後の name=value 組み合わせの後にはカンマはありません。
•更新される列は単一の SET 句により指定されています。列の値は、NULL 値がその列に対して使用することを許可されていることを前提にして、A値を NULL に設定することで削除するこができます。例: 例えば、: SET [Contact] = NULL。
再ロードアクションにより変更された DB を変更が実行された後すぐに再ロードすることができます。再ロードアクションを使用しない場合、変更はページに表示されません。
SQL の DELETE ステートメントは以下を削除するために使用されます:
•テーブルの特定の行 (WHERE 句を指定して削除する行を選択します。)
•テーブルの全ての行 (WHERE 句を省略することによりテーブルの全ての行を選択します。)
以下は SQL DELETE ステートメントのサンプルです:
DELETE FROM [AltovaMobile_Offices]
WHERE [id] = 11;
上の SQL DELETE ステートメントは id=11 を持つ行を削除します。WHERE 句が省略される場合、 AltovaMobile_Offices テーブルのすべての行は削除されます。
DB 実行アクション内の SQL DELETE ステートメント
再ロードアクションにより変更された DB を変更が実行された後すぐに再ロードすることができます。再ロードアクションを使用しない場合、変更はページに表示されません。