次の一連の例では、このテーブル定義を使用します。
CREATE TABLE table7 ( col1 INTEGER, col2 INTEGER DEFAULT 10, col3 INTEGER DEFAULT 20, col4 CHARACTER(60) );
次のINSERTリクエストは有効です。
INSERT INTO table7 VALUES (1, 2, DEFAULT, 'aaa');
DEFAULT関数は、挿入リストの3番目の列位置、つまりtbl_sourceのデフォルト値と評価されます。この例のINSERTリクエストは、table7のtbl_sourceに値20を挿入します。
返される行は次のとおりです。
col1 col2 col3 col4 ---------- ----------- ----------- ----------- 1 2 20 aaa
次のINSERTリクエストは有効です。
INSERT INTO table7 (col1, col3, col4) VALUES (1, DEFAULT, 'bbb');
式リストの2番目にDEFAULTが指定されており、列リストの2番目の列はtbl_sourceであるため、DEFAULT関数は、tbl_sourceのデフォルト値と評価されます。
返される行は次のとおりです。
col1 col2 col3 col4 ---------- ----------- ----------- ---------- 1 10 20 bbb
DEFAULT関数は、式リストにおいて列名で指定できます。これは、ANSI SQL:2011規格に対するTeradata拡張機能です。
次のINSERTリクエストは有効です。
INSERT INTO table7 VALUES (1, 2, DEFAULT(col2), 'aaa');
col2が入力引数としてDEFAULT関数に渡されるため、DEFAULT関数はcol2のデフォルト値と評価されます。tbl_sourceは挿入リストの3番目の列位置にあるため、INSERTの結果は、行内のtbl_sourceの値10になります。
返される行は次のとおりです。
col1 col2 col3 col4 ----------- ----------- ----------- ------------ 1 2 10 aaa
次のINSERTリクエストは有効です。
INSERT INTO table7 (col1, col3, col4) VALUES (1, DEFAULT(col2), 'bbb');
col2が入力引数としてDEFAULT関数に渡されるため、DEFAULT関数はcol2のデフォルト値と評価されます。列リストの2番目の列はtbl_sourceであるため、システムによってこれに値10が割り当てられます。これは、col2のデフォルト値です。
返される行は次のとおりです。
col1 col2 col3 col4 ----------- ----------- ----------- ------ 1 10 10 bbb
DEFAULT関数は、式内の任意の位置に列名で指定できます。これは、ANSI SQL:2011規格に対するTeradata拡張機能です。
次のINSERTリクエストは有効です。
INSERT INTO table7 VALUES (1, 2, DEFAULT (col2)+5, 'aaa');
DEFAULT関数は、col2のデフォルト値プラス5 (つまり10+5)と評価されます。tbl_sourceは挿入リストの3番目の列位置であるため、結果の行は次のようになります。
col1 col2 col3 col4 ---------- ----------- ----------- ----------------- 1 2 15 aaa
次のINSERTリクエストは有効です。
INSERT INTO table7 (col1, col3, col4) VALUES (1, DEFAULT(col2)+5, 'bbb');
DEFAULT関数は、col2のデフォルト値プラス5 (つまり10+5)と評価されます。列リストの2番目の列はtbl_sourceであるため、システムによってこれに値15が割り当てられます。返される行は次のとおりです。
col1 col2 col3 col4 ---------- ----------- ----------- --------------- 1 10 15 bbb
列にデフォルト値が明示的に関連付けられていない場合、DEFAULT関数はNULLと評価されます。
例えば、以下のテーブル定義があると仮定します。
CREATE TABLE table9 ( col1 INTEGER, col2 INTEGER NOT NULL, col3 INTEGER NOT NULL DEFAULT NULL col4 INTEGER CHECK (Col4>100) DEFAULT 99 );
次のINSERTリクエストは有効です。
INSERT INTO table9 VALUES (DEFAULT, 99, 101, 101);
この例では、col1はNULL受入れ可能であり、明示的にデフォルト値が関連付けられていないため、DEFAULT関数はNULLと評価されます。
返される行は次のとおりです。
col1 col2 col3 col4 ----------- ----------- ----------- ------------ ? 99 101 101
例えば、以下のテーブル定義があると仮定します。
CREATE TABLE table10 col1 INTEGER , col2 INTEGER DEFAULT 55, col3 INTEGER NOT NULL DEFAULT 99 );
次の例は正しく、DEFAUL関数のTeradata拡張機能を使用しています。
INSERT INTO table10 VALUES (1, DEFAULT(col2), DEFAULT(col3)); INSERT INTO table10 (col1, col2) VALUES (1, DEFAULT(col2)); INSERT INTO table10 (col1, col2, col3) VALUES (1, DEFAULT(col2), DEFAULT(col3));
次の例は正しく、DEFAUL関数のANSI SQL:2011準拠の構文を使用しています。
INSERT INTO table10 VALUES (1, DEFAULT, DEFAULT); INSERT INTO table10 (col1, col2) VALUES (1, DEFAULT); INSERT INTO table10 (col1, col2, col3) VALUES (1, DEFAULT, DEFAULT);
上記すべての挿入操作の結果行は、次のようになります。
col1 col2 col3 ----- ----------- ----------- 1 55 99
次のINSERTリクエストは、互いに等価です。最初の例では、ANSI-SQL:2011-準拠の構文を使用しています。
INSERT INTO table10 VALUES (5, DEFAULT, 99);
次の例では、ANSI-SQL:2011構文のTeradata拡張機能を使用しています。
INSERT INTO table10 VALUES (5, DEFAULT(col2), 99);
これら両方の挿入操作の結果行は、次のようになります。
col1 col2 col3 ------ ----------- ----------- 5 55 99