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