DEFAULT関数オプション
DEFAULT関数を使用すると、VALUES式リスト内の位置に基づいて、デフォルト値を返し、挿入することができます。また、明示的な列名がDEFAULT関数とともに指定されている場合は、名前に基づくことができます。
DEFAULT VALUESオプション
次のテーブルで定義されるすべての列を持つテーブルの場合、DEFAULT VALUESキーワードで定義されたINSERTが、定義されたデフォルト値(指示される位置)、識別列の識別値、および別の列(定義されている場合)のnullから構成される行を追加します。
NULL受入れ可能? | デフォルトは定義されるか? |
---|---|
はい | いいえ |
はい | はい |
いいえ | はい |
上のINSERTは、テーブル定義によって強制された条件を満たす場合に発生します。そうでない場合は、エラーが返されます。
埋め込みSQLは、INSERTのDEFAULT VALUESオプションもサポートしています。
識別列を持つテーブルにINSERTを行なう場合、識別列がGENERATED ALWAYSとして定義されていてもGENERATED BY DEFAULTとして定義されていても、システムは常にその識別列の番号を生成します。
次の例では、table_1に識別列がある場合、システムは常にその値を生成します。
INSERT table_1 DEFAULT VALUES;
テーブルの非識別列がNOT NULLとして定義され、DEFAULTが定義されていない場合、エラーが返される(ANSIセッション モード)か、トランザクションがアボートします(Teradataセッション モード)。
それ以外の場合、あるテーブルの行が有効で、既存の行と重複し、そのテーブルが重複行を受け入れないように定義されている場合、エラーが返される(ANSIセッション モード)か、トランザクションがアボートします(Teradataセッション モード)。
値を指定せずに列に挿入する
新しい行の各列に値を指定しない場合、次のルールが適用されます。
- 列にNOT NULLの指定がなく、デフォルト値の指定がない場合は、null値が挿入されます。
- 列がNOT NULLとして宣言され、デフォルト値が宣言されない場合、エラーが返される(ANSIセッション モード)か、トランザクションがアボートします(Teradataセッション モード)。