INSERT コマンドは、表に新しい行を挿入します。一度に 1 つの行を挿入することや、照会の結果として複数行を挿入することもできます。ターゲット・リストには列を任意の順序で指定できます。
ターゲット・リストに指定されていない列には、宣言されたデフォルト値または NULL 値が挿入されます。NULL が宣言されていない列に NULL を挿入すると、その新規列はシステムに拒否されます。
各列の式のデータ型が正しくない場合には、自動的に型強制が試行されます。
INSERT INTO <table> [ ( <col>[,<col>…] ) ]
{ DEFAULT VALUES | VALUES [ ( <expression>[,<expression>…] ) | SELECT <query> }
| 入力 | 説明 |
|---|---|
| <table> | 行の挿入先となる表の名前。 |
| <col> | 表内の列の名前。 |
| DEFAULT VALUES | デフォルト節を使用して表を作成した際に指定した値か、または NULL をすべての列に格納します。 |
| <expression> | 列に割り当てる式または値。 |
| <query> | 照会。 |
INSERT コマンドの出力は以下のとおりです。
| 出力 | 説明 |
|---|---|
| insert 0 <n> | コマンドは正常に実行されました。<n> は、挿入された行の数を表します。 |
| Error: Reload allow NULLs mismatch <table> <col> | コマンドにより、外部表における指定された列のデータを、ターゲット表に挿入しようとしました。しかし、2 つの列の NULL 設定が一致していません。 両方の表でそれらは同じでなければなりません。 挿入操作は失敗しました。 |
| Error: Large table size limit on <part>, SPU <Default ¶ Font>. | 挿入操作により、表の最大サイズを超過します。 大規模表のサポートが有効でない限り、このサイズは 64 GB です。 |
admin ユーザー、表の所有者、またはこの表が定義されたデータベースかスキーマの所有者でなければなりません。あるいは、ご使用のアカウントに、この表または Table オブジェクト・クラスに対する Insert 特権が付与されていなければなりません。また、where 節で指定するすべての表に対する Select 特権も必要です。
以下に使用例を示します。
MYDB.SCH1(USER)=> INSERT INTO films VALUES
('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
MYDB.SCH1(USER)=> INSERT INTO films (code, title, did, date_prod,
kind) VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
MYDB.SCH1(USER)=> INSERT INTO distributors (name) VALUES
('British Lion');
ここでは、name 列のみが指定されているため、省略された列にはそのデフォルト値が割り当てられます。MYDB.SCH1(USER)=> INSERT INTO films SELECT * FROM tmp;