INSERT

Name

INSERT -- テーブルに新しい行を作成

Synopsis

INSERT INTO <table>[@<dblink> ] [ ( <column> [, ...] ) ]
  { VALUES ( { <expression> | DEFAULT } [, ...] )
    [ RETURNING <return_expression> [, ...]
        { INTO { <record> | <variable> [, ...] }
        | BULK COLLECT INTO <collection> [, ...] } ]
  | <query> }

Description

INSERT を使用すると、テーブルに新しい行を挿入できます。一度に1つの行を挿入することも、クエリの結果として複数の行を挿入することもできます。

ターゲットリストの列は、任意の順序でリストできます。ターゲットリストにない各列は、宣言されたデフォルト値またはnullのデフォルト値を使用して挿入されます。

各列の式が正しいデータ型でない場合、自動型変換が試行されます。

RETURNING INTO { record | variable [, ...] } 句は、 INSERT コマンドがSPLプログラム内で使用され、 VALUES 句が使用されている場合にのみ指定できます。

RETURNING BULK COLLECT INTO collection [, ...] 節は、 INSERT コマンドがSPLプログラム内で使用される場合にのみ指定できます。 BULK COLLECT INTO 句のターゲットとして複数の collection が指定されている場合、各 collection は単一のスカラーフィールドで構成されている必要があります。つまり、 collection はレコードであってはなりません。挿入された行ごとに return_expression が評価され、最初の要素から collection の要素になります。 collection の既存の行はすべて削除されます。結果セットが空の場合、 collection は空になります。

テーブルに挿入するには、テーブルに対する INSERT 権限が必要です。 query 句を使用してクエリから行を挿入する場合、クエリで使用されるテーブルに対する SELECT 権限も必要です。

Parameters

table

既存のテーブルの名前(オプションでスキーマ修飾)。

dblink

リモートデータベースを識別するデータベースリンク名。データベースリンクの詳細については、 CREATE DATABASE LINK コマンドを参照してください。

column

table の列の名前。

expression

column に割り当てる式または値。

DEFAULT

この列にはデフォルト値が入力されます。

query

挿入する行を提供するクエリ( SELECT ステートメント)。構文の説明については、 SELECT コマンドを参照してください。

return_expression

table の1つ以上の列を含む可能性のある式。 return_expression に table の列名が指定されている場合、 return_expression の評価時に列に代入される値は次のように決定されます。

return_expression で指定された列に INSERT コマンドで値が割り当てられている場合、割り当てられた値は return_expression の評価に使用されます。

return_expression で指定された列に INSERT コマンドで値が割り当てられておらず、テーブルの列定義に列のデフォルト値がない場合、 return_expression の評価ではnullが使用されます。

return_expression で指定された列に INSERT コマンドで値が割り当てられておらず、テーブルの列定義に列のデフォルト値がある場合、 return_expression の評価ではデフォルト値が使用されます。

record

評価された return_expression が割り当てられるフィールドを持つレコード。最初の return_expression は record の最初のフィールドに割り当てられ、2番目の return_expression は record の2番目のフィールドに割り当てられます。 record のフィールドの数は式の数と正確に一致する必要がありますフィールドは、割り当てられた式と型互換性がなければなりません。

variable

評価された return_expression が割り当てられる変数。複数の return_expression と variable が指定されている場合、最初の return_expression が最初の variable に割り当てられ、2番目の return_expression が2番目の variable に割り当てられます。 INTO キーワードは RETURNING キーワードに続く式の数と正確に一致する必要があり、変数は割り当てられた式と型互換性がなければなりません。

collection

評価された return_expression から要素が作成されるコレクション。単一フィールドのコレクションまたはレコードタイプのコレクションである単一コレクション、または複数のコレクションがあり、各コレクションが単一フィールドで構成されている必要があります。戻り式の数は数が一致し、指定されたすべてのコレクション内のフィールドの数を並べる必要があります。対応する各 return_expression および collection フィールドは、タイプ互換である必要があります。

Examples

テーブル emp に単一の行を挿入します。

INSERT INTO emp VALUES (8021,'JOHN','SALESMAN',7698,'22-FEB-07',1250,500,30);

この2番目の例では、列 comm が省略されているため、デフォルト値はnullになります。

INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, deptno)
    VALUES (8022,'PETERS','CLERK',7698,'03-DEC-06',950,30);

3番目の例では、値を指定するのではなく、 hiredate 列と comm 列に DEFAULT 句を使用しています。

INSERT INTO emp VALUES (8023,'FORD','ANALYST',7566,NULL,3000,NULL,20);

この例では、部門名のテーブルを作成し、 dept テーブルの dname 列から選択してテーブルに挿入します。

CREATE TABLE deptnames (
    deptname        VARCHAR2(14)
);
INSERT INTO deptnames SELECT dname FROM dept;