SQL 構文リファレンス : DEFAULT
 
このページをシェアする                  
DEFAULT
DEFAULT キーワードは以下のコンテキストで使用できます。
CREATE TABLE ステートメントの列定義
ALTER TABLE ステートメントの列定義
INSERT ステートメントの VALUES 句
UPDATE ステートメントの VALUES 句
CREATE TABLE または ALTER TABLE ステートメントに指定するデフォルト値(リテラルまたは式)は、次の条件を満たしている必要があります。
列のデータ型と一致している
列に設定されている範囲や長さなどの制約に従っている
INSERT および UPDATE ステートメントでは、DEFAULT 値が定義されている列に値を指定する必要はありません。このような場合は、PSQL が DEFAULT 式を計算し、その結果値を列の値として使用します。
構文
次のステートメントの構文を参照してください。
ALTER TABLE
CREATE TABLE
INSERT
UPDATE
備考
次の一覧に示されているように、あらゆるデータ型の列に対し、DEFAULT 値として式を指定することができます。
BFLOAT4、BFLOAT8
BIGINT、UBIGINT
BINARY
BIT
CHAR
CURRENCY
DATE
DECIMAL
DOUBLE
IDENTITY
INTEGER、UINTEGER
LONGVARBINARY
LONGVARCHAR
NLONGVARCHAR
NUMERIC
NUMERICSA
NUMERICSTS
REAL
SMALLIDENTITY
SMALLINT、USMALLINT
TIME
TIMESTAMP
TINYINT、UTINYINT
UNIQUEIDENTIFIER
VARCHAR
CREATE TABLE ステートメントまたは ALTER TABLE ステートメントでは、IDENTITY または SMALLIDENTITY データ型にデフォルト値ゼロ(default 0 または default '0')を設定できます。それ以外のデフォルト値は許可されません。
次のステートメントによって、Tab1 という名前のテーブルが作成されます。列 col1 のデフォルト値は、NOW () によって返されるタイムスタンプの DATE 部分とします。
CREATE TABLE Tab1
(col1 DATE DEFAULT NOW())
============ 
次のステートメントによって、Tab5 という名前のテーブルが作成されます。列 col5 のデフォルト値は 200 とします。
CREATE TABLE Tab5
(col5 INT DEFAULT 200)
============ 
次のステートメントによって、Tab8 という名前のテーブルが作成されます。列 col8 のデフォルト値は、INSERT または UPDATE ステートメント実行時のタイムスタンプとします。
CREATE TABLE Tab8
(col8 TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
============ 
次のステートメントによって、Tab6 という名前のテーブルが作成されます。列 col6 のデフォルト値は、INSERT または UPDATE ステートメント実行後のユーザーの名前とします。デフォルト ユーザー名を実際に利用できるのは、セキュリティが有効になっている場合のみです。有効になっていない場合、USER は常にヌルです。
CREATE TABLE Tab6
(col6 VARCHAR(20) DEFAULT USER)
============ 
次のステートメントは、不正な例を示しています。TIME は DATE 列で許可されているデータ型ではないため、このステートメントは解析時エラーになります。
CREATE TABLE Tab
(col DATE DEFAULT CURTIME())
============ 
次のステートメントは、不正な例を示しています。このステートメントは解析時エラーになります。'3.1' は数値に変換できますが、それは有効な整数ではありません。
CREATE TABLE Tab
(col SMALLINT DEFAULT '3.1')
============ 
次のステートメントは、不正な例を示しています。CREATE TABLE ステートメントは成功しますが、-60000 は SMALLINT でサポートされる値の範囲外であるため、INSERT ステートメントは失敗します。
CREATE TABLE Tab
(col SMALLINT DEFAULT 3 * -20000)
INSERT INTO Tab values(DEFAULT)
============ 
次のステートメントは、IDENTITY および SMALLIDENTITY データ型にデフォルト値ゼロを設定する正しい例を示しています。
CREAT TABLE t1 ( c1 IDENTITY DEFAULT '0' )
ALTER TABLE t1 ALTER c1 SMALLIDENTITY DEFAULT 0
============ 
次のステートメントは、IDENTITY および SMALLIDENTITY データ型にデフォルト値を設定する不正な例を示しています。
CREATE TABLE t1 ( c1 IDENTITY DEFAULT 3 )
ALTER TABLE t1 ALTER c1 SMALLIDENTITY DEFAULT 1
日付列または時刻列のデフォルト値としての式
DEFAULT は、行の挿入時に列の値が指定されなかった場合、その列で使用する値を指定します。
列のデフォルトとして式を割り当てるには、CREATE TABLE ステートメントで DEFAULT キーワードを使ってデフォルト値を定義します。テーブルの作成方法の詳細については、CREATE TABLE を参照してください。
PSQL では、リテラル値やヌル値のほかに、日付および時刻のスカラー関数や式も、適合するデータ型の列のデフォルト値として指定することができます。
CURRENT_USER() は、CHAR および VARCHAR 文字列型の列のデフォルト値として使用できます。
次の表は、適合するデータ型列へデフォルト値を設定するために呼び出すことのできる、固有の日付および時刻スカラー関数の一覧を示しています。
表 23 デフォルト値としての日付および時刻スカラー関数
関数
デフォルトの対象
CURRENT_DATE( )
日付列のみ
CURDATE( )
日付列のみ
CURRENT_TIME( )
時刻列のみ
CURTIME( )
時刻列のみ
CURRENT_TIMESTAMP( )
タイムスタンプ列または日付時刻列
NOW( )
タイムスタンプ列または日付時刻列
INSERT および UPDATE ステートメントで、列のデフォルト値としてスカラー関数を指定すると、PSQL は指定されたスカラー関数を呼び出し、その呼び出し結果を当該列の値に設定します。
関連項目
ALTER TABLE
CREATE TABLE
INSERT
UPDATE