SQL 構文リファレンス : DEFAULT
 
このページをシェアする                  
DEFAULT
DEFAULT キーワードは以下のコンテキストで使用できます。
CREATE TABLE ステートメントの列定義
ALTER TABLE ステートメントの列定義
INSERT ステートメントの VALUES 句
UPDATE ステートメントの VALUES 句
CREATE TABLE または ALTER TABLE ステートメントに指定するデフォルト値(リテラルまたは式)は、次の条件を満たしている必要があります。
列のデータ型と一致している
列に設定されている範囲や長さなどの制約に従っている
INSERT および UPDATE ステートメントでは、DEFAULT 値が定義されている列に値を指定する必要はありません。このような場合は、Pervasive PSQL が DEFAULT 式を計算し、その結果値を列の値として使用します。
構文
次のステートメントの構文を参照してください。
ALTER TABLE
CREATE TABLE
INSERT
UPDATE
備考
次の表に示されているように、あらゆるデータ型の列に対し、DEFAULT 値として式を指定することができます。
表 30 許可されている DEFAULT 式のデータ型
リレーショナル データ型
許可されている DEFAULT 式の型(ODBC データ型)
BFLOAT4、BFLOAT8
BIGINT、UBIGINT
BIT
CURRENCY
DECIMAL
DOUBLE
IDENTITY1
INTEGER、UINTEGER
NUMERIC
NUMERICSA
NUMERICSTS
REAL
SMALLIDENTITY1
SMALLINT、USMALLINT
TINYINT、UTINYINT
SQL_BIGINT
SQL_BIT
SQL_CHAR
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_INTEGER
SQL_LONGVARCHAR
SQL_NUMERIC
SQL_REAL
SQL_SMALLINT
SQL_TINYINT
SQL_VARCHAR
BINARY
LONGVARBINARY
SQL_BIGINT
SQL_BINARY
SQL_BIT
SQL_CHAR
SQL_GUID
SQL_INTEGER
SQL_LONGVARBINARY
SQL_LONGVARCHAR
SQL_SMALLINT
SQL_TINYINT
SQL_VARCHAR
CHAR
LONGVARCHAR
VARCHAR
SQL_BIGINT
SQL_BIT
SQL_CHAR
SQL_DATE
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_GUID
SQL_INTEGER
SQL_LONGVARCHAR
SQL_NUMERIC
SQL_REAL
SQL_SMALLINT
SQL_TIME
SQL_TIMESTAMP
SQL_TINYINT
SQL_VARCHAR
UNIQUEIDENTIFIER
SQL_CHAR
SQL_LONGVARCHAR
SQL_VARCHAR
SQL_GUID
DATE
SQL_CHAR
SQL_DATE
SQL_LONGVARCHAR
SQL_TIMESTAMP
SQL_VARCHAR
式のデータ型が TIMESTAMP の場合は、日付部分のみが抽出されて使われます。
TIME
SQL_CHAR
SQL_LONGVARCHAR
SQL_TIME
SQL_TIMESTAMP
SQL_VARCHAR
式のデータ型が TIMESTAMP の場合は、時刻部分のみが抽出されて使われます。
TIMESTAMP
SQL_CHAR
SQL_DATE
SQL_LONGVARCHAR
SQL_TIMESTAMP
SQL_VARCHAR
式のデータ型が DATE の場合、時刻部分は '00:00:00' に設定されます。
1 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)
============ 
次のステートメントは、不正な例を示しています。SQL_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 を参照してください。
Pervasive PSQL では、リテラル値やヌル値のほかに、日付および時刻のスカラー関数や式も、適合するデータ型の列のデフォルト値として指定することができます。
CURRENT_USER() は、CHAR および VARCHAR 文字列型の列のデフォルト値として使用できます。
次の表は、適合するデータ型列へデフォルト値を設定するために呼び出すことのできる、固有の日付および時刻スカラー関数の一覧を示しています。
表 31 デフォルト値としての日付および時刻スカラー関数
関数
デフォルトの対象
CURRENT_DATE( )
日付列のみ
CURDATE( )
日付列のみ
CURRENT_TIME( )
時刻列のみ
CURTIME( )
時刻列のみ
CURRENT_TIMESTAMP( )
タイムスタンプ列または日付時刻列
NOW( )
タイムスタンプ列または日付時刻列
INSERT および UPDATE ステートメントで、列のデフォルト値としてスカラー関数を指定すると、Pervasive PSQL は指定されたスカラー関数を呼び出し、その呼び出し結果を当該列の値に設定します。
関連項目
ALTER TABLE
CREATE TABLE
INSERT
UPDATE