PostgreSQL create domain

pg中的CREATE DOMAIN表示创建一个新的域,这一功能在oracle中是不支持的。域本质上是一种带有可选约束(在允许的值集合上的 限制)的数据类型。 定义一个域的用户将成为它的拥有者。
如果给定一个模式名(例如CREATE DOMAIN myschema.mydomain …),那么域将被创建在 该指定的模式中。 否则它会被创建在当前模式中。域的名称在其模式中的类型和域之间 必 须保持唯一。
要创建一个域,你必须在其底层类型上拥有USAGE特权。

语法:

Command:     CREATE DOMAIN
Description: define a new domain
Syntax:
CREATE DOMAIN name [ AS ] data_type
    [ COLLATE collation ]
    [ DEFAULT expression ]
    [ constraint [ ... ] ]

where constraint is:

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

例子:
–创建domain
创建一个domain表示用来存放小于0的整数

bill=# create domain d1 as int check(value < 0);
CREATE DOMAIN

–使用domain建表

bill=# create table t_domain(id d1);
CREATE TABLE

–插入数据测试
插入大于0的数便会报错

bill=# insert into t_domain values(1);
ERROR:  value for domain d1 violates check constraint "d1_check"
bill=# insert into t_domain values(-1);
INSERT 0 1

参考链接:https://www.postgresql.org/docs/12/sql-createdomain.html

发布了70 篇原创文章 · 获赞 5 · 访问量 3124

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/103926380
今日推荐