16.20 - WITH DEFAULT句 - Teradata Vantage NewSQL Engine

Teradata Vantage™ データ タイプおよびリテラル

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

目的

INSERT文で列に対する値が指定されなかった場合には、そのフィールドにシステム定義のデフォルト値を挿入するように指定します。

構文



ANSI準拠

WITH DEFAULTは、ANSI SQL:2011規格に対するTeradataの拡張機能です。

使用上の注意

この句のANSI形式については、DEFAULT句を参照してください。

数値範囲の制約を伴うWITH DEFAULT句を使用する場合には、その列に定義されたデータ型に割り当てられたシステムのデフォルト値はその範囲内である必要があります。

CREATE TABLE文の処理において、すべてのWITH DEFAULT句は、システム デフォルト値がデフォルトの定数値(constant_value)になるDEFAULT句に変換されます。

非互換性に関する注意

WITH DEFAULT句とDEFAULT句は、相互に排他的です。

WITH DEFAULT句のシステム値

システムのデフォルト値は、その列に対して定義したデータ型によって定まります。データ型とそれに関連するシステムのデフォルト値を以下のテーブルに示します。

データ型 システムのデフォルト
BIGINT ゼロ
BYTE[(n)] nが省略された場合、またはnが2進数0の場合、0
BYTEINT ゼロ
CHAR[(n)] 以下に示すとおり、サーバー文字セットによって異なります。
  • LATINの場合、システム デフォルトはASCII SPACE(0x20)です。
  • UNICODEの場合、システム デフォルトはSPACE(U+0020)です。
  • KANJISJISまたはKANJI1の場合、システム デフォルトはASCII SPACE(0x20)です。
  • GRAPHICの場合、システム デフォルトはIDEOGRAPHIC SPACE(U+3000)です。
DATE 現在の日付
DECIMAL NUMERIC ゼロ
DOUBLE PRECISION ゼロ
FLOAT ゼロ
INTEGER ゼロ
INTERVAL DAY INTERVAL ' 0 ' DAY
INTERVAL DAY TO HOUR INTERVAL ' 0 00 ' DAY TO HOUR
INTERVAL DAY TO MINUTE INTERVAL ' 0 00:00 ' DAY TO MINUTE
INTERVAL DAY TO SECOND INTERVAL ' 0 00:00:00 ' DAY TO SECOND
INTERVAL HOUR INTERVAL ' 0 ' HOUR
INTERVAL HOUR TO MINUTE INTERVAL ' 00:00 ' HOUR TO MINUTE
INTERVAL HOUR TO SECOND INTERVAL ' 00:00:00 ' HOUR TO SECOND
INTERVAL MINUTE INTERVAL ' 0 ' MINUTE
INTERVAL MINUTE TO SECOND INTERVAL ' 00:00 ' MINUTE TO SECOND
INTERVAL MONTH INTERVAL ' 0 ' MONTH
INTERVAL SECOND INTERVAL ' 0 ' SECOND
INTERVAL YEAR INTERVAL ' 0 ' YEAR
INTERVAL YEAR TO MONTH INTERVAL ' 0-00 ' YEAR TO MONTH
NUMBER ゼロ
PERIOD(DATE) デフォルト値は、CURRENT_DATEに設定された開始の引数とUNTIL_CHANGEDに設定された終了の引数のある期間値のコンストラクタを使用して、暗黙に設定されます。
PERIOD(TIMESTAMP) デフォルト値は、CURRENT_TIMESTAMP[(n)]に設定された開始の引数とUNTIL_CHANGEDに設定された終了の引数のある期間値のコンストラクタを使用して、暗黙に設定されます。
REAL ゼロ
SMALLINT ゼロ
TIME CURRENT_TIME
TIMESTAMP CURRENT_TIMESTAMP
TIMESTAMP WITH TIME ZONE CURRENT_TIMESTAMP
TIME WITH TIME ZONE CURRENT_TIME
VARBYTE (n) ' ' (NULL文字列)

サポートされないデータ型

以下のデータ型で定義した列のWITH DEFAULT句は指定できません。
  • BLOBまたはCLOB
  • UDT
  • PERIOD(TIME)

例: WITH DEFAULT句

例えば、EdLev列が次のように定義されていると、

EdLev BYTEINT FORMAT 'Z9' NOT NULL WITH DEFAULT,

EdLevの列定義は次のように格納されます。

EdLev BYTEINT NOT NULL DEFAULT 0 FORMAT 'Z9',

例: デフォルト値を使用した行の挿入

次のINSERT文は、前の例で定義したEdLevフィールドにゼロを持つ行を加えます。

INSERT INTO Employee
 (Name, EmpNo, DeptNo, DOB, Sex, EdLev)
 VALUES ('Newhire A', 10025, 700, '49/10/17', 'M',) ;

例: TIME列のデフォルトとして現在時刻を指定

次に示すのは、TIME列にデフォルトとして現在時刻を指定した例です。

Stage TIME(3) WITH DEFAULT

例: デフォルトの間隔を指定したINTERVAL列

次に示すのは、INTERVAL列にデフォルトの間隔(Interval)値を指定した例です。

Scale INTERVAL HOUR(2) WITH DEFAULT