pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
CREATE DOMAIN — 定义一个新的域
CREATE DOMAINname[AS]data_type[ DEFAULTexpression] [constraint[ ... ] ] 其中constraint是: [ CONSTRAINTconstraint_name] { NOT NULL | NULL | CHECK (expression) }
CREATE DOMAIN创建一个新的数据域。定义域的 用户将成为它的拥有者。
如果给出了一个模式名(例如CREATE DOMAIN myschema.mydomain ...),那么该域会被创建在指定的模式中。 否则它会被创建在当前模式中。域名在其模式中已有的类型和域之间 必须唯一。
域适合用于把多个表共用的公共字段抽象到一个单一位置进行维护。 例如,一个电子邮件地址列可能在多个表中使用,而它们具有 相同的属性。定义一个域并使用它,而不是为每个表单独设置 约束。
name要创建的域的名字(可以用模式限定)。
data_type域的底层数据类型。这可以包括数组说明符。
DEFAULT expressionDEFAULT子句为域数据类型的列指定一个默认值。 该值可以是任何不含变量的表达式(但不允许子查询)。默认 表达式的数据类型必须与域的数据类型匹配。如果没有指定 默认值,那么默认值为空值。
在任何未为列指定值的插入操作中都会使用默认表达式。如果 为某个特定的列定义了默认值,它会覆盖与域相关联的任何 默认值。反过来,域默认值又会覆盖与底层数据类型相关联的 任何默认值。
CONSTRAINT constraint_name一个约束的可选名称。如果没有指定,系统会生成一个名字。
NOT NULL此域的值不允许为空。
NULL此域的值允许为空。这是默认值。
此子句只是为了与非标准 SQL 数据库兼容而设。不鼓励在 新的应用中使用它。
CHECK (expression)CHECK子句指定该域的值必须满足的完整性约束或 测试。每个约束都必须是一个产生布尔结果的表达式。它应当 使用名字VALUE来引用被测试的值。
当前,CHECK表达式不能包含子查询,也 不能引用VALUE之外的变量。
这个例子创建country_code数据类型,然后在表定义中 使用该类型:
CREATE DOMAIN country_code char(2) NOT NULL; CREATE TABLE countrylist (id integer, country country_code);
CREATE DOMAIN命令符合 SQL 标准。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。