ALTER DOMAIN(7)

NAME
ALTER DOMAIN - 改变一个域的定义

SYNOPSIS

ALTER DOMAIN name
    { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name
    { SET | DROP } NOT NULL
ALTER DOMAIN name
    ADD domain_constraint
ALTER DOMAIN name
    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
ALTER DOMAIN name
    OWNER TO new_owner

DESCRIPTION 描述

ALTER DOMAIN 修改一个现有域的定义。 它有几种子形式：

SET/DROP DEFAULT
     这些形式设置或者删除一个域的缺省值。请注意缺省只适用于随后的 INSERT 命令；他们并不影响使用该域已经在表中的行。

SET/DROP NOT NULL
     这些形式改变一个域是否标记为允许 NULL 值或者是拒绝 NULL 值。 在使用域的字段包含非空的值的时候，你只可以 SET NOT NULL。

ADD domain_constraint
     这种形式向域中增加一种新的约束，使用的语法和 CREATE DOMAIN [create_domain(7)] 一样。这样做只有在所有使用域的字段满足新的约束的条件下才能成功。

DROP CONSTRAINT
     这种形式删除一个域上的约束。

OWNER
     这种形式把域的所有者改变为另外一个用户。

 要使用 ALTER DOMAIN，你必须拥有该域；但是使用 ALTER DOMAIN OWNER 的时候你必须是数据库超级用户。

PARAMETERS 参数

name
     一个要修改的现有域的名字（可以有模式修饰）。

domain_constraint
     域的新的域约束。

constraint_name
     要删除的现有约束。

CASCADE
     自动删除依赖这个对象的约束。

RESTRICT
     如果有任何依赖对象，则拒绝删除约束。这是缺省行为。

new_owner
     域的新所有者的用户名。

EXAMPLES 例子

 给一个域增加一个 NOT NULL 约束：

ALTER DOMAIN zipcode SET NOT NULL;

 从一个域里删除一个 NOT NULL 约束：

ALTER DOMAIN zipcode DROP NOT NULL;

 给一个域里增加一个检查约束：

ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);

 从一个域里删除一个检查约束：

ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;

COMPATIBILITY 兼容性

ALTER DOMAIN 语句与 SQL99 兼容，除 OWNER 变种之外，这个变种是 PostgreSQL 的扩展。

译者
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>