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