CREATE DOMAIN domainname [AS] data_type [ DEFAULT default_expr ] [ constraint [, ... ] ] 这里 constraint 是∶ [ CONSTRAINT constraint_name ] { NOT NULL | NULL }
要创建的域名字(可以有大纲修饰).
域的下层数据类型.它可以包含数组声明字. 请参考用户手册获取更多有关数据类型和数组的信息.
DEFAULT 子句为域数据类型声明一个缺省值. 该值是任何不含变量的表达式(但不允许子查询). 缺省表达式的数据类型必需匹配域的数据类型.
缺省表达式将用在任何不为该字段声明数值的插入操作. 如果域没有缺省值,那么缺省是 NULL.
注意: 如果为特定的字段声明了缺省值,那么它覆盖任何和该域相关联的缺省值. 然后,域的缺省覆盖任何与下层数据类型相关的缺省.
一个约束的可选名称.如果没有声明,系统生成一个名字.
这个域的数值不允许为 NULL.
这个域的数值允许为空.它是缺省.
这个子句只是用于和非标准的 SQL 数据库兼容用. 我们不建议在新的应用中使用它.
CREATE DOMAIN 允许用户为当前数据库在 PostgreSQL列注册一个新的用户数据域. 定义域的用户成为其所有者.
如果给出一个大纲名称(比如,CREATE DOMAIN myschema.mydomain ...), 那么该域是在指定的大纲中创建的.否则它会在当前大纲中创建 (在搜索路径中最前面的那个;参阅 CURRENT_SCHEMA()). 域名字必需在其所在大纲中的现有类型和域中唯一.
域可以便于我们把不同表之间的公共域抽取到一个位置进行维护. 一个电子邮件地址字段可能在多个表中使用,所有的都是同样的属性. 我们可以定义并使用一个域,而不是分别设置每个表的约束.