INSERT... SELECT文は、問合せの結果を表に挿入します。
必要な権限
オブジェクトの所有者に必要な権限はありません。
別のユーザーのオブジェクトの場合、INSERTとSELECTが必要です。
SQL構文
INSERT INTO [Owner.]TableName [(ColumnName [,...])] InsertQuery
パラメータ
INSERT... SELECT文には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
[ Owner .] TableName |
データを追加する表。 |
ColumnName |
値を指定する列。 表の列を列名リストで省略した場合は、INSERT...SELECT文によって、省略された列にデフォルト値が割り当てられます。 省略した列に表定義でNOT NULLが指定されている場合、その列にデフォルト値が定義されていなければ、INSERT...SELECT文は失敗します。 CREATE TABLE文で指定された順序と同じ順序で表のすべての列に対して値を指定する場合は、列名リストを省略できます。指定する値が少なすぎる場合は、その他の列にデフォルト値が割り当てられます。 |
InsertQuery |
サポートされている任意のSELECT問合せ。 「SELECT」を参照してください。 |
説明
結果セットの列の型は、ターゲット表の列の型と互換性がある必要があります。
値を挿入するときに、順序CURRVALまたはNEXTVALを指定できます。
InsertQuery
のFROM句では、ターゲット表は参照できません。
InsertQuery
でORDER BY句を使用できます。ターゲット表に結果セットを挿入する際に、ORDER BY句を使用してソート順序が変更されますが、順序は保証されません。
InsertQuery
にエラーがあると、INSERT操作は失敗します。
RETURNING句はINSERT... SELECT文では使用できません。
例
purchasing.parts
表に新しい行を追加します。この表には、20日未満で発送される部品が記述されています。
INSERT INTO purchasing.parts SELECT partnumber, deliverydays FROM purchasing.supplyprice WHERE deliverydays < 20;