SYNOPSIS

CREATE DOMAIN name [AS] data_type
[ DEFAULT expression ]
[ constraint [ ... ] ] where constraint is: [ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression) }

DESCRIPTION 描述

CREATE DOMAIN 创建一个新的数据域。 定义域的用户成为其所有者。

如果给出一个模式名称(比如,CREATE DOMAIN myschema.mydomain ...), 那么该域是在指定的模式中创建的。否则它会在当前模式中创建。 域名字必需在其所在模式中的现有类型和域中唯一。

域可以便于我们把不同表之间的公共域抽取到一个位置进行维护。 比如,一个电子邮件地址字段可能在多个表中使用,所有的都是同样的属性。 我们可以定义并使用一个域,而不是分别设置每个表的约束。

PARAMETERS 参数

name
 要创建的域名字(可以有模式修饰)。
data_type
 域的下层数据类型。它可以包含数组声明字。
DEFAULT expression
DEFAULT 子句为域数据类型的字段声明一个缺省值。 该值是任何不含变量的表达式(但不允许子查询)。
缺省表达式的数据类型必需匹配域的数据类型。如果没有声明缺省值, 那么缺省值就是空值。

缺省表达式将用在任何不为该字段声明数值的插入操作。 如果为特定的字段声明了缺省值,那么它覆盖任何和该域相关联的缺省值。 然后,域的缺省覆盖任何与下层数据类型相关的缺省。

CONSTRAINT constraint_name
 一个约束的可选名称。如果没有声明,系统生成一个名字。
NOT NULL
 这个域的数值不允许为 NULL。
NULL
 这个域的数值允许为空。它是缺省。
 
 这个子句只是用于和非标准的 SQL 数据库兼容用。 我们不建议在新的应用中使用它。
CHECK (expression)
 CHECK 子句声明完整性约束或者是测试,域地数值必须满足这些要求。 每个约束必须是一个生成一个布尔结果的表达式。它应该使用名字 VALUE  来引用被测试的数值。

目前,CHECK 表达式不能包含子查询,也不能引用除 VALUE 之外的变量。

EXAMPLES 例子

这个例子创建了 country_code 数据类型并且在一个表定义中使用了该类型:

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

CREATE DOMAIN - 定义一个新域的更多相关文章

  1. CREATE FUNCTION - 定义一个新函数

    SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE lang ...

  2. CREATE AGGREGATE - 定义一个新的聚集函数

    SYNOPSIS CREATE AGGREGATE name ( BASETYPE = input_data_type, SFUNC = sfunc, STYPE = state_data_type ...

  3. CREATE OPERATOR - 定义一个新的操作符

    SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ...

  4. CREATE TRIGGER - 定义一个新的触发器

    SYNOPSIS CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] } ON table [ FOR [ EACH ] { ROW | ...

  5. CREATE RULE - 定义一个新的重写规则

    SYNOPSIS CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ INSTEAD ] { N ...

  6. CREATE TYPE - 定义一个新的数据类型

    SYNOPSIS CREATE TYPE name AS ( attribute_name data_type [, ... ] ) CREATE TYPE name ( INPUT = input_ ...

  7. CREATE TABLE - 定义一个新表

    SYNOPSIS CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_ty ...

  8. CREATE SCHEMA - 定义一个新的模式

    SYNOPSIS CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEM ...

  9. CREATE GROUP - 定义一个新的用户组

    SYNOPSIS CREATE GROUP name [ [ WITH ] option [ ... ] ] where option can be: SYSID gid | USER usernam ...

随机推荐

  1. HDU3829 Cat VS Dog —— 最大独立集

    题目链接:https://vjudge.net/problem/HDU-3829 Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  2. bzoj4811 [Ynoi2017]由乃的OJ 树链剖分+位运算

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4811 因为位运算的结果有可合并性,所以可以树链剖分,线段树维护: 细节很多,特别要注意从左往 ...

  3. MVC视图中下拉框的使用

    一.一般变量或对象的绑定 首先要在controller 中将选项设置成 selecList对象,并赋值给viewBag动态对象. public ActionResult Index(string mo ...

  4. E20180306-hm-xa

    base  n. 基地; 基础; 根据; 基数(如十进制的10 和二进制的2) designate vt. 指派; 指明,指出; 表明,意味着; 把…定名为;

  5. postgresql 9.4.4 源码安装

    Postgresql下载网址: http://www.postgresql.org/ftp/source/ 这里我们选择最新的稳定版版postgresql-9.4.4 的源码版 https://ftp ...

  6. bzoj 3144 [Hnoi2013]切糕【最小割+dinic】

    都说了是'切'糕所以是最小割咯 建图: 每个点向下一层连容量为这个点的val的边,S向第一层连容量为inf的边,最后一层向T连容量为自身val的边,即割断这条边相当于\( f(i,j) \)选择了当前 ...

  7. 洛谷 P3355 骑士共存问题【最小割】

    同方格取数问题:https://www.cnblogs.com/lokiii/p/8430720.html 记得把障碍点去掉,不连边也不计入sum #include<iostream> # ...

  8. centos6.5 系统-搭建lamp(php7)环境--(yum在线安装)

    1.查看当前服务器的版本 #方法1 cat /etc/redhat-release #方法2 rpm -q centos-release 2.安装apache #一键安装apache yum inst ...

  9. 【爬坑系列】之docker的overlay网络配置(未完,待续)

    理论知识储备: 想了解vxlan网络的知识:https://www.cnblogs.com/shuiguizi/p/10923841.html 想了解docker网络的原理知识:https://www ...

  10. 操作JavaScript的Alert弹框

    @Testpublic void testHandleAlert(){ WebElement button =driver.findElement(By.xpath("input" ...