DB 実行アクション

www.altova.com すべてを展開/折りたたむ このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データベース >

DB 実行アクション

[DB 実行] アクション (下のスクリーンショット参照) は DB データを修正するためのパワフルなメカニズムです。 SQL ステートメントを使用してデータを挿入、削除、更新および保存することができます。これにより、ソリューションの進行中に SQL 言語のパワーをイベントが発生する際に使用することができます。

MTDDBExecuteInsert01

このセクションでは、 DB 実行 を使用してデータの挿入、更新、削除と保存方法について説明されます。  DB データの変更を行うコマンドは、アクションの SQL ステートメントで指定されています。 (上のスクリーンショットを参照してください) DB 実行アクションの詳細については、ページ デザイン > アクション > データベース > DB 実行のセクションを参照してください。  DB 実行の SQL ステートメントは、パラメータの使用を許可することにより、柔軟性を向上します。 これらのパラメーターの値は、XPath 式により生成されます。詳細に関しては、 [DB 実行] アクションのセクションを参照してください。

 

DB データが、アクションが定義されているページと同じページで表示されている場合、再ロードアクションを使用して変更された DB の表示を更新することができます (上のスクリーンショット参照)。上のスクリーンショットでは、 $DB1 ツリーがデータベーステーブル OfficeSales_DB のルートノードです。 INSERT ステートメントと共に、OfficeSales_DB が変更された後、デザインページの $DB1 ツリーは再ロードされ、このため、 DB への変更がすぐに反映されます。

 

 

挿入: DB 実行 と SQL を使用しての行の挿入

SQL の INSERT ステートメントはデータベーステーブルに行を挿入するために使用することができます。INSERT INTO ステートメントは特定の値を持つ行を挿入するために使用されますが、 INSERT SELECT ステートメントは、 SELECT  ステートメントの結果をテーブルに挿入する時に使用されます。SELECT INTO などの他の SQL ステートメントを使用して、テーブルに行を挿入することができます。

MTDDBExecuteInsert01

Click to expand/collapse単一の行全体または行の一部を挿入する

INSERT INTO を使用してテーブルに単一行を挿入する。SQL 構文は以下の通りです:

 

INSERT INTO DestinationTable (ID, City) VALUES ('ID-Value', 'City-Value');

 

上のステートメントは 2 つの列 (ID および City) を含む行を DestinationTable テーブルに挿入します。以下の点に注意してください:

 

SQL ステートメントで指定された列のみが新しい行(上のサンプル内の ID,City )に挿入されます。
(すべてのテーブル列を含む) 行全体を挿入するには、SQL ステートメント内のすべてのテーブル列を指定します。
SQL ステートメント内の列の名前と列の値は、各ポジションで互いに対応する必要があります。この列の順序は、 DB テーブル内の列の順序に対応する必要はありません。これは、 DB テーブルのレイアウトが後に変更し、 SQL ステートメントは正しく、変更されたレイアウトを反映するために更新される必要がないからです。
各列の名前に対して、列の値は存在する必要があります。それ以外の場合、エラーが発生し、行は挿入されません。
SQL ステートメントで、列が省略されている場合、 DB 内で定義されている列は NULL 値 (または空の) またはデフォルトの値を持つことを許可されていなければなりません。それ以外の場合、エラーが生成され、行は挿入されません。
複数の行を挿入する場合は、複数のINSERT INTO ステートメントを指定する必要があります。

 

 

Click to expand/collapseSELECT ステートメントの結果の挿入

INSERT SELECT を使用して、テーブルに SELECT ステートメントの結果を挿入します。通常、 INSERT SELECT はテーブルから他のテーブルに行のセットをコピーするために使用されます。 SQL 構文は以下の通りです:

 

INSERT SELECT Offices (ID, City, Country) SELECT ('ID', 'Stadt', 'Land'FROM Offices_DE ;

 

上のステートメントは Offices_DEテーブルの全ての行を Offices テーブルに挿入します。以下の点に注意してください:

 

SQL ステートメント内で指定された列のみが新しい行(上のサンプル内 ID, City, Country ) に挿入されます。
SELECT ステートメントにより返された列は、目的のテーブルの対応する列に挿入されます。列の対応は、位置により決定されます。上のサンプルでは、たとえば、 Stadt 列は SELECT ステートメントのポジション 2 にあり、目的テーブルのポジション 2 にある City 列に対応します。目的テーブルにある 2 つの列の名前は一致する必要がありません。対応はポジションにより固定されます。
WHERE 句で、 SELECT ステートメントを使用して挿入されたデータをフィルターすることができます。

 

 

 

更新:DB 実行と 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 ステートメントのサンプルを表示しています。

MTDDBExecuteUpdate01

以下の点に注意してください:

 

更新される列は name=value の組み合わせにより与えられます。 各、 name=value 組み合わせは次の組み合わせとカンマで区切られています。最後の name=value 組み合わせの後にはカンマはありません。
更新される列は単一の SET 句により指定されています。
列の値は、NULL 値がその列に対して使用することを許可されていることを前提にして、A値を NULL に設定することで削除するこができます。 例えば、: SET [Contact] = NULL。

 

再ロードアクションは、変更が加えられたあと変更された DBをすぐに再ロードします。再ロードアクションを使用しないと、ページに変更は表示されません。

 

 

削除:DB 実行 と SQL を持つ行の削除

SQL の DELETE ステートメントは以下を削除するために使用されます:

 

テーブルの特定の行 (WHERE 句を指定して削除する行を選択します。)
テーブルの全ての行 (WHERE 句を省略することによりテーブルの全ての行を選択します。)

 

以下は SQL DELETE ステートメントのサンプルです:

 

DELETE FROM [AltovaMobile_Offices]

WHERE [id= 11;

 

上の SQL DELETE ステートメントは id=11 を持つ行を削除します。 WHERE 句が省略される場合、 AltovaMobile_Offices テーブルのすべての行は削除されます。

MTDDBExecuteDelete01

DB 実行アクション内の SQL DELETE ステートメント

再ロードアクションにより変更された DB を変更が実行された後すぐに再ロードすることができます。再ロードアクションを使用しない場合、変更はページに表示されません。

 


(C) 2019 Altova GmbH