DEFAULT
DEFAULT キーワードは以下のコンテキストで使用できます。
•CREATE TABLE ステートメントの列定義
•ALTER TABLE ステートメントの列定義
•INSERT ステートメントの VALUES 句
•UPDATE ステートメントの VALUES 句
CREATE TABLE または ALTER TABLE ステートメントに指定するデフォルト値(リテラルまたは式)は、次の条件を満たしている必要があります。
•列のデータ型と一致している
•列に設定されている範囲や長さなどの制約に従っている
INSERT および UPDATE ステートメントでは、DEFAULT 値が定義されている列に値を指定する必要はありません。このような場合は、PSQL が DEFAULT 式を計算し、その結果値を列の値として使用します。
構文
次のステートメントの構文を参照してください。
備考
次の一覧に示されているように、あらゆるデータ型の列に対し、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 は指定されたスカラー関数を呼び出し、その呼び出し結果を当該列の値に設定します。
関連項目