17.05 - INSERTリクエスト内のSUBQUERY - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
esx1472246586715

サブクエリー (INSERT ... SELECTリクエストと呼ばれる)を使用するINSERT文は、次の点で単純なINSERTとは異なります。多くの行を単一の操作で挿入できるということと、行の値を複数のテーブルから持ってくることができることです。

問合わせ指定は、常にFROM table_name句を伴っていなければなりません。

さらに、次の条件が存在している場合、サブクエリーを含むINSERTリクエストで列名のリストを定義する必要があります。
  • 問合わせ指定の列の数が挿入先のテーブルに含まれる列の数と異なる。
  • 問合わせ指定の列の順序が挿入先のテーブルに定義された列の順序と異なる。

SUBQUERYのあるINSERT ... SELECTの使用

SELECTがサブクエリーである場合、INSERT ... SELECTリクエストのSELECTコンポーネントにORDER BY句を指定することはできません。

INSERTリクエストでのスカラーSUBQUERYの使用

INSERTおよびINSERT ... SELECTリクエストにスカラー サブクエリーを指定する場合には、次のルールと制限が適用されます。
  • スカラー サブクエリーは、パラメータ化された値として、単純なINSERTリクエストの値リストに指定することができます。ただし、データベースでは、そのスカラー サブクエリーを常に非相関スカラー サブクエリーとして解釈します。例: スカラー サブクエリーを使用したINSERTを参照してください。
  • 単純なINSERTリクエストで識別列に割当てられた値リストの値として、非相関スカラー サブクエリーを指定することはできません。
  • スカラー サブクエリーを使用したINSERTリクエストを、トリガー本体に指定することができます。

    ただし、スカラー サブクエリーを使用した単純なINSERTリクエストを、行トリガー本体の値リストに指定することはできません。

  • INSERT ... SELECTリクエストのSELECT構成要素に、スカラー サブクエリーを指定できます。
  • Vantageでは、行トリガー内でINSERT ... SELECTのSELECT構成要素に指定した非相関スカラー サブクエリーを、パラメータ化された値としてではなく、単一列の単一行スプールとして処理します。