INSERT ステートメントを使用した行の挿入

単一行または複数行を表またはビューに追加するには、INSERT ステートメントの形式を使用してください。

次のいずれかの方法で、INSERT ステートメントを使用して表またはビューに新規の行を追加することができます。

挿入する各行について、NOT NULL 属性が定義されている各列に値を提供しなければなりません (その列にデフォルト値がない場合)。表またはビューに行を追加するための INSERT ステートメントは、次のようになります。

   INSERT INTO 表名
      (列 1, 列 2, ... )
   VALUES (列 1 の値, 列 2 の値, ... )

INTO 文節には、値を指定する列の名前を指定します。 VALUES 文節には、INTO 文節に指定した各列の値を指定します。 値には、次のいずれかを指定できます。

INSERT ステートメントの列リストに名前を指定した各列について、VALUES 文節で値を指定しなければなりません。表内のすべての列が、VALUES 文節で指定する値を持つ場合には、列名リストを省略することができます。 ある列にデフォルト値が入る場合には、VALUES 文節内の値としてキーワード DEFAULT を使用することができます。 これにより、その列にデフォルト値が入れられます。

値を挿入しようとするすべての列の名前を指定することをお勧めします。理由は以下のとおりです。

列がヌル値を認めるか、またはデフォルト値を持つように定義されている場合は、列名リストでその名前を指定したり、その値を指定したりする必要はありません。この場合は、デフォルト値が使用されます。列がデフォルト値を持つように定義されている場合は、列にデフォルト値が入ります。明示のデフォルト値を持たない列定義について DEFAULT が指定されると、SQL はそのデータ・タイプについてのデフォルト値を列に入れます。 列用に定義されたデフォルト値がないが、その列がヌル値を認めるように定義されている (列定義で NOT NULL が指定されていない) 場合には、SQL はその列にヌル値を入れます。

表内の既存の行と重複する行をプログラムが挿入しようとすると、エラーが起こることがあります。 複数のヌル値は、索引の作成時に使用されたオプションによって、重複する値と見なされる場合と見なされない場合があります。

SQL が INSERT ステートメントの実行中にエラーを検出すると、データの挿入を中止します。 COMMIT(*ALL)、COMMIT(*CS)、COMMIT(*CHG)、または COMMIT(*RR) が指定されていると、行の挿入は行われません。選択ステートメントを伴う INSERT またはブロック化挿入の場合、このステートメントによってすでに挿入されている行は削除されます。COMMIT(*NONE) が指定されている場合は、すでに挿入された行があっても、削除されません

SQL によって作成される表は、*YES の削除済みレコード再利用パラメーターを用いて作成されます。 これにより、データベース・マネージャーは、表内の削除済みとしてマークされた行を再利用することができます。CHGPF コマンドを使用すると、属性を *NO に変更できます。これを行うと、INSERT では常に表の終わりに行が追加されるようになります。

行を挿入した順序で、それらの行が取り出されるとは限りません。

行がエラーなしで挿入されると、SQLCA の SQLERRD(3) フィールドに 1 が入ります。

注: ブロック化 INSERT の場合、または選択ステートメントを伴う INSERT の場合は、複数の行が挿入される可能性があります 。 挿入された行の数は、SQLCA の SQLERRD(3) に反映されます。 GET DIAGNOSTICS ステートメントの ROW_COUNT 診断項目からも使用可能です。