.\" auto-generated by docbook2man-spec $Revision: 1.1 $ .TH "CREATE DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands" .SH NAME CREATE DOMAIN \- 定义一个新域 .SH SYNOPSIS .sp .nf CREATE DOMAIN \fIname\fR [AS] \fIdata_type\fR [ DEFAULT \fIexpression\fR ] [ \fIconstraint\fR [ ... ] ] where \fIconstraint\fR is: [ CONSTRAINT \fIconstraint_name\fR ] { NOT NULL | NULL | CHECK (\fIexpression\fR) } .sp .fi .SH "DESCRIPTION 描述" .PP \fBCREATE DOMAIN\fR 创建一个新的数据域。 定义域的用户成为其所有者。 .PP 如果给出一个模式名称(比如,CREATE DOMAIN myschema.mydomain ...), 那么该域是在指定的模式中创建的。否则它会在当前模式中创建。 域名字必需在其所在模式中的现有类型和域中唯一。 .PP 域可以便于我们把不同表之间的公共域抽取到一个位置进行维护。 比如,一个电子邮件地址字段可能在多个表中使用,所有的都是同样的属性。 我们可以定义并使用一个域,而不是分别设置每个表的约束。 .SH "PARAMETERS 参数" .TP \fB\fIname\fB\fR 要创建的域名字(可以有模式修饰)。 .TP \fB\fIdata_type\fB\fR 域的下层数据类型。它可以包含数组声明字。 .TP \fBDEFAULT \fIexpression\fB\fR DEFAULT 子句为域数据类型的字段声明一个缺省值。 该值是任何不含变量的表达式(但不允许子查询)。 缺省表达式的数据类型必需匹配域的数据类型。如果没有声明缺省值, 那么缺省值就是空值。 缺省表达式将用在任何不为该字段声明数值的插入操作。 如果为特定的字段声明了缺省值,那么它覆盖任何和该域相关联的缺省值。 然后,域的缺省覆盖任何与下层数据类型相关的缺省。 .TP \fBCONSTRAINT \fIconstraint_name\fB\fR 一个约束的可选名称。如果没有声明,系统生成一个名字。 .TP \fBNOT NULL\fR 这个域的数值不允许为 NULL。 .TP \fBNULL\fR 这个域的数值允许为空。它是缺省。 这个子句只是用于和非标准的 SQL 数据库兼容用。 我们不建议在新的应用中使用它。 .TP \fBCHECK (\fIexpression\fB)\fR CHECK 子句声明完整性约束或者是测试,域地数值必须满足这些要求。 每个约束必须是一个生成一个布尔结果的表达式。它应该使用名字 VALUE 来引用被测试的数值。 目前,CHECK 表达式不能包含子查询,也不能引用除 VALUE 之外的变量。 .SH "EXAMPLES 例子" .PP 这个例子创建了 country_code 数据类型并且在一个表定义中使用了该类型: .sp .nf CREATE DOMAIN country_code char(2) NOT NULL; CREATE TABLE countrylist (id integer, country country_code); .sp .fi .SH "COMPATIBILITY 兼容性" .PP \fBCREATE DOMAIN\fR 命令符合 SQL 标准。 .SH "SEE ALSO 参见" DROP DOMAIN [\fBdrop_domain\fR(7)] .SH "译者" .B Postgresql 中文网站 .B 何伟平 .SH "跋" .br 本页面中文版由中文 man 手册页计划提供。 .br 中文 man 手册页计划:\fBhttps://github.com/man-pages-zh/manpages-zh\fR