INSERT ステートメント

INSERT ステートメントは、ビューに 1 つまたは複数のタプルを挿入し、基盤となるデータソースを更新します。

INSERT ステートメントの構文
INSERT INTO <view identifier> ( <field name> [, <field name> ]* )
    VALUES ( <value> [, <value> ]* )
    [ RETURNING <field name> [ , <field name> ]* ]
    [ CONTEXT ( <context information> [, <context information> ]* ) ]
    [ TRACE ]

INSERT INTO <view identifier>
    VALUES ( <value> [, <value> ]* )
    [ RETURNING <field name> [, <field name> ]* ]
    [ CONTEXT ( <context information> [, <context information> ]* ) ]
    [ TRACE ]

INSERT INTO <view identifier> [ ( <field name> [, <field name> ]* ) ]
    [ RETURNING <field name> [, <field name>]* ]
    VALUES ( <value> [, <value> ]* ) [, ( <value> [, <value> ]* ) ]*
    [ TRACE ]

INSERT INTO <view identifier>
    SET <field name> = <value> [, <field name> = <value> ]*
    [ RETURNING <field name> [, <field name>]* ]
    [ CONTEXT ( <context information> [, <context information> ]* ) ]
    [ TRACE ]

INSERT INTO { <identifier of a base view of a remote table> | <materialized table identifier> |
              <temporary table identifier> }
     [ OPTIONS ( <option information> [ , <option information> ]* ) ]
     <select query>
     [ CONTEXT ( <context information> [, <context information> ]* ) ]
     [ TRACE ]

<field name> ::=
  <identifier>[.<identifier>]

<value> ::=
    NULL
  | <number>
  | <boolean>
  | <literal>
  | <function>

<view identifier> ::= (「 VQL ステートメントを指定するための基本プリミティブ 」を参照)

<identifier of a base view of a remote table> ::= CREATE_REMOTE_TABLE プロシージャまたは Create Remote Table フォームで作成された基本ビュー。

<materialized table identifier> ::= (「 Materialized Tables 」を参照)

<temporary table identifier> ::= (「 Temporary Tables 」を参照)

<option information> := 挿入を設定するためのオプションのパラメーター。使用できるオプションの詳細については、「 CREATE REMOTE TABLE コマンド 」を参照してください。

<select query> ::= (「 SELECT ステートメントの構文 」を参照)
RETURNING 句の動作については、「 変更された行を返す 」を参照してください。

INSERT INTO view <SELECT QUERY>

このコマンドは、以下の手順を実行します。

  1. VDP サーバーで選択クエリを実行します。

  2. 前の手順で実行したクエリで取得した行を、ビューに挿入します。

このタイプの INSERT では、データソースが data movement 最適化をサポートしている必要があります。一部のデータソースでは、データ移動をサポートするために データ一括読み込み を有効にする必要があります。

このコマンドを実行するには、以下の権限が必要です。

  • ビューに対する Insert 、またはビューが置かれているデータベースに対する Connect および Write

  • 選択クエリで参照されるビューに対する Execute

例 :

ビュー internet_inc への行の追加

INSERT INTO internet_inc (iinc_id, summary, taxid, specific_field1, specific_field2)
VALUES (6, 'Error in ADSL Router', 'B78596015', '5', '6')

行は、ソースデータベース内で internet_inc ビューに関連付けられたテーブルに追加されます。

ビュー internet_inc へ行を追加するための代替構文

INSERT INTO internet_inc
SET
    iinc_id = 6
  , summary = 'Error in ADSL router'
  , taxid = 'B78596015'
  , specific_field1 = '5'
  , specific_field2 = '6'

1 つのビューへの複数行の追加

INSERT INTO employee (last_name, first_name, title) VALUES
    ('Callahan', 'Laura', 'IT Staff')
  , ('Edwards', 'Nancy', 'Sales Manager')
  , ('King', 'Robert', 'IT Staff');

選択クエリを使用した挿入

INSERT INTO all_sales
SELECT * FROM online_sales
WHERE year = getyear(CURRENT_DATE());