↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

CREATE DOMAIN

CREATE DOMAIN — 定义一个新的域

大纲

CREATE DOMAIN domainname [AS] data_type
    [ DEFAULT default_expr ]
    [ constraint [ ... ] ]

其中 constraint 是:

[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL }
  

参数

domainname

要创建的域的名字(可以用模式限定)。

data_type

域的底层数据类型。这可以包括数组说明符。 有关数据类型和数组的更多信息,请参阅用户指南。

DEFAULT default_expr

DEFAULT子句为域数据类型的列指定一个默认值。 该值可以是任何不含变量的表达式(但不允许子查询)。 默认 表达式的数据类型必须与域的数据类型匹配。

在任何未为列指定值的插入操作中都会使用默认表达式。如果 域没有默认值,那么默认值为 NULL。

注意

如果为某个特定的列指定了默认值,它会覆盖与域相关联的 任何默认值。反过来,域默认值又会覆盖与底层数据类型相关联的 任何默认值。

CONSTRAINT constraint_name

一个约束的可选名称。如果没有指定,系统会生成一个名字。

NOT NULL

此域的值不允许为 NULL。

NULL

此域的值允许为 NULL。这是默认值。

此子句只是为了与非标准 SQL 数据库兼容而设。不鼓励在 新的应用中使用它。

输出

CREATE DOMAIN

如果域被成功创建,返回此消息。

描述

CREATE DOMAIN允许用户向PostgreSQL注册一个新的 数据域,以便在当前数据库中使用。定义域的 用户将成为它的拥有者。

如果给出了一个模式名(例如CREATE DOMAIN myschema.mydomain ...),那么该域会被创建在 指定的模式中。否则它会被创建在当前模式中(即搜索路径最前端 的那个模式;参见CURRENT_SCHEMA())。 域名在其模式中已有的类型和域之间必须唯一。

域适合用于把多个表共用的公共字段抽象到一个单一位置进行维护。 一个电子邮件地址列可能在多个表中使用,而它们具有 相同的属性。定义一个域并使用它,而不是为每个表单独设置 约束。

示例

这个例子创建country_code数据类型,然后在表定义中 使用该类型:

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

兼容性

SQL99 定义了 CREATE DOMAIN,但它规定唯一允许的约束类型是 CHECK 约束。PostgreSQL尚不支持域上的 CHECK 约束。

另见

DROP DOMAIN , PostgreSQL 程序员指南

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。