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