テーブルに新しい行を追加します。
Synopsis
INSERT restriction INTO table
[(column-commalist)] query |
[(column-commalist)] VALUES
(scalar-expression-commalist) |
[(column-commalist)] VALUES host-variable |
SET column = scalar-expression
{,column = scalar-expression}
INSERT 文は、テーブルに新しい行を追加します。テーブルに直接挿入、またはビュー経由で挿入できます。ビュー経由で挿入する場合は、
CREATE VIEW で説明されているように、必要条件や制限事項に従います。
-
%NOCHECK ビュー経由で INSERT を実行する際、ビューの WITH CHECK OPTION 変数は実行されません。
-
%NOLOCK 行は DELETE でロックされていません単独のユーザ/処理がデータベースを更新する際にのみ使用します。
-
%NOINDEX インデックス・マップは INSERT 処理中には設定されません
-
%NOTRIGGER ベース・テーブル・トリガは INSERT 処理中にはかかりません
列のリストを省略すると、INSERT は、すべての列が列番号順で挿入されるものと判断します。列のリストを指定すると、個々の値は、列のリスト内の列の名前と位置的に一致する必要があります。
SELECT 文が入力としての機能を果たす場合は、複数の行が検索される SELECT 文を基に、複数の行の挿入が可能になります。
INSERT は全か無かのイベントです。列が完全に挿入されるか、またはまったく挿入されないかのどちらかとなります。列が完全に挿入されるか、またはまったく挿入されないかのどちらかとなります。Caché は、SQLCODE ステータス変数を返し、INSERT の成功もしくは失敗を示します。また、INSERT オペレーションは %ROWCOUNT 変数を、影響を受けた行の番号に設定します。
ホスト変数構文では、INSERT に値の配列を渡すために、最後の添え字が未定義の変数参照を使用することができます。 例えば以下のようになります。
&sql(INSERT INTO Employee
VALUES :emp("profile",))
これは、挿入された "Employee" 行の各フィールドを以下のように設定します。
ここでの "col" は "Employee" テーブル内のフィールド列番号です。
以下の例は、選択クエリの結果を INSERT 文内へのデータ入力として使用する際の機能性を示しています。
INSERT INTO StudentRoster (NAME,GPA,ID_NUM)
SELECT FullName,GradeAvg,ID
FROM temp WHERE SchoolYear = '1990'