Provided by: manpages-zh_1.5-1_all bug

NAME

       CREATE DOMAIN - 定义一个新域

SYNOPSIS

       CREATE DOMAIN name [AS] data_type
           [ DEFAULT expression ]
           [ constraint [ ... ] ]

       where constraint is:

       [ CONSTRAINT constraint_name ]
       { NOT NULL | NULL | CHECK (expression) }

DESCRIPTION述
       CREATE DOMAIN 创建一个新的数据域。 定义域的用户成为其所有者。

        如果给出一个模式名称(比如,CREATE  DOMAIN  myschema.mydomain  ...),
       那么该域是在指定的模式中创建的。否则它会在当前模式中创建。
       域名字必需在其所在模式中的现有类型和域中唯一。

        域可以便于我们把不同表之间的公共域抽取到一个位置进行维护。
       比如,一个电子邮件地址字段可能在多个表中使用,所有的都是同样的属性。
       我们可以定义并使用一个域,而不是分别设置每个表的约束。

PARAMETERS数
       name    要创建的域名字(可以有模式修饰)。

       data_type
               域的下层数据类型。它可以包含数组声明字。

       DEFAULT expression
              DEFAULT                   子句为域数据类型的字段声明一个缺省值。
              该值是任何不含变量的表达式(但不允许子查询)。
              缺省表达式的数据类型必需匹配域的数据类型。如果没有声明缺省值,
              那么缺省值就是空值。

               缺省表达式将用在任何不为该字段声明数值的插入操作。
              如果为特定的字段声明了缺省值,那么它覆盖任何和该域相关联的缺省值。
              然后,域的缺省覆盖任何与下层数据类型相关的缺省。

       CONSTRAINT constraint_name
               一个约束的可选名称。如果没有声明,系统生成一个名字。

       NOT NULL
               这个域的数值不允许为 NULL。

       NULL    这个域的数值允许为空。它是缺省。

               这个子句只是用于和非标准的          SQL          数据库兼容用。
              我们不建议在新的应用中使用它。

       CHECK (expression)
               CHECK  子句声明完整性约束或者是测试,域地数值必须满足这些要求。
              每个约束必须是一个生成一个布尔结果的表达式。它应该使用名字 VALUE
              来引用被测试的数值。

               目前,CHECK       表达式不能包含子查询,也不能引用除      VALUE
              之外的变量。

EXAMPLES子
        这个例子创建了 country_code 数据类型并且在一个表定义中使用了该类型:

       CREATE DOMAIN country_code char(2) NOT NULL;
       CREATE TABLE countrylist (id integer, country country_code);

COMPATIBILITY性
       CREATE DOMAIN 命令符合 SQL 标准。

SEE ALSO见
       DROP DOMAIN [drop_domain(7)]

者
       Postgresql  <laser@pgsqldb.org>