使用常量表达式作为缺省值

可以将常量表达式作为缺省列值。

下表列出了您可指定的常量表达式,以及相应的列的数据类型要求和建议的大小(以字节为单位)。
表 1. 常量表达式作为缺省值
常量表达式 数据类型要求 建议大小
CURRENT, SYSDATE DATETIME 列及匹配的限定符 足够的字节存储语言环境中最长的 DATETIME 值
DBSERVERNAME, SITENAME CHAR 、VARCHAR 、NCHAR 、NVARCHAR 或 CHARACTER VARYING 列 128 字节
TODAY DATE 列 足够的字节存储语言环境中最长的 DATE 值
USER, CURRENT_USER CHAR 、VARCHAR 、NCHAR 、NVARCHAR 或 CHARACTER VARYING 列 32 字节

这些是我们建议的列大小,因为如果在 INSERT 或 ALTER TABLE 操作期间由于列长度太小无法存储缺省值时,数据库服务器将返回一个错误。

您不能为保存 OPAQUE 或 DISTINCTY 数据类型的列指定行为类似可变函数的常量表达式(即 CURRENT 、 SYSDATE 、USER 、TODAY 、SITENAME 或 DBSERVERNAME)作为缺省值。另外,如果数据值是加密或使用 UTF-8 语言环境中 Unicode 字符集编码的话,则需要较大的列大小。(关于对加密数据所需的存储大小的更多信息,请参阅本章随后关于 SET ENCRYPTION 语句的描述。)

有关这些函数的描述,请参阅 常量表达式

以下示例创建了一个名为 accounts 的数据库。在 accounts 中,acc_numacc_typeacc_descr 列中有文字缺省值。acc_id 列的缺省值是用户的登录名。
CREATE TABLE accounts (
        acc_num INTEGER DEFAULT 1,
        acc_type CHAR(1) DEFAULT 'A',
        acc_descr CHAR(20) DEFAULT 'New Account',
        acc_id CHAR(32) DEFAULT CURRENT_USER);