领域

基于现有数据类型用户定义的数据类型

一个 domain(有时称为“派生类型”)是基于现有数据类型用户定义的数据类型,通常用于提供检查约束的通用定义,该定义可用于多个表定义。

注意事项

与常规约束不同,虽然将列转换为域类型或插入列时会检查应用于域的任何约束,但如果修改了域定义,则不会追溯检查这些约束。

psql 命令

  • \dD[S+] 列出域

更改历史记录

示例

创建域

postgres=# CREATE DOMAIN git_sha1 AS
  CHAR(40) NOT NULL
  CHECK (VALUE ~ '^[0-9a-fA-F]+$');
CREATE DOMAIN

顾名思义,这定义了一个适合存储 GIT sha1 标签的域。

列出可用的域

postgres=# \dD
                                               List of domains
 Schema |   Name   |     Type      | Collation | Nullable | Default |                 Check                  
--------+----------+---------------+-----------+----------+---------+----------------------------------------
 public | git_sha1 | character(40) |           | not null |         | CHECK (VALUE ~ '^[0-9a-fA-F]+$'::text)
(1 row)

使用域创建表

postgres=# CREATE TABLE object_commit_ref (
             repo TEXT NOT NULL,
             commit_ref GIT_SHA1,
             PRIMARY KEY(repo, commit_ref)
           );
CREATE TABLE

插入有效数据

postgres=# INSERT INTO repo_commit_ref 
                VALUES('postgresql', 'd31084e9d1118b25fd16580d9d8c2924b5740dff');
INSERT 0 1

尝试插入无效数据

postgres=# INSERT INTO object_commit_ref VALUES('foo', NULL);
ERROR:  domain git_sha1 does not allow null values

postgres=# INSERT INTO object_commit_ref VALUES('bar', 'baz');
ERROR:  value for domain git_sha1 violates check constraint "git_sha1_check"

类别

数据类型

另请参阅

CREATE DOMAINALTER DOMAINDROP DOMAIN

反馈

提交任何关于“Domain”的评论、建议或更正 此处