ALTER DOMAIN
更改现有域的定义。
概要
ALTER DOMAIN name { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name { SET | DROP } NOT NULL
ALTER DOMAIN name ADD domain_constraint [ NOT VALID ]
ALTER DOMAIN name DROP CONSTRAINT [ IF EXISTS ] constraint_name [RESTRICT | CASCADE]
ALTER DOMAIN name RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER DOMAIN name VALIDATE CONSTRAINT constraint_name
ALTER DOMAIN name OWNER TO new_owner
ALTER DOMAIN name RENAME TO new_name
ALTER DOMAIN name SET SCHEMA new_schema
描述
ALTER DOMAIN
更改一个现有域的定义。 有几种形式:
- SET/DROP DEFAULT — 这些形式设置或删除域的默认值。默认值仅适用于后续的
INSERT
命令。它们不影响使用域的表中已经存在的行。 - SET/DROP NOT NULL — 这些形式会改变域是否被标记为允许
NULL
值或者拒绝NULL
值。用户只能SET NOT NULL
当使用域的列不包含空值时。 - ADD domain_constraint [ NOT VALID ] — 这种形式使用和
CREATE DOMAIN
相同的语法为域增加一个新的约束。如果一个新的约束被添加到域中,所有在这个域中的列都会根据新添加的约束重新检查,这些检查可以用NOT VALID
选项来限制; 这些约束可以被随后的ALTER DOMAIN ... VALIDATE CONSTRAINT
来使之可用,新插入或这更新的行会永远根据所有的约束最检查,即使那些被标记为NOT VALID
的约束,NOT VALID
只能定义在CHECK
的约束上。 - DROP CONSTRAINT [ IF EXISTS ] — 此形式删除域的约束。如果提供了
IF EXISTS
选项而要删除的约束不存在,语句只会抛出一个提醒而不会抛出错误。 - RENAME CONSTRAINT — 此形式改稿一个现有域的约束的名字
- VALIDATE CONSTRAINT — 此形式会验证之前被标记为
NOT VALID
的约束,这样会验证在这个约束中的列的所有数据 - OWNER — This form changes the owner of the domain to the specified user.
- RENAME — 此形式将域的所有者更改为指定的用户。
- SET SCHEMA — 此形式更改域的模式。与域相关联的任何约束也被移动到新的模式中。
用户必须拥有域才能ALTER DOMAIN
. 要更改域的模式,用户还必须对新模式具有 CREATE
特权 要更改所有者,用户还必须是新拥有角色的直接或间接成员,并且该角色必须对该域的模式具有 CREATE
特权。 这些限制强制修改拥有者不能做一些通过删除和重 建域做不到的事情。不过,一个超级用户怎么都能更改任何域的所有权。)。
参数
name 要更改的现有域的名称(可选方案限定。
domain_constraint 域的新域约束。 constraint_name 要修改护着删除的约束名 NOT VALID 不检查在约束中定义的已存在的数据。 CASCADE 自动删除依赖于此约束的所有对象。 RESTRICT 如果有任何依赖对象,拒绝删除约束。这是默认行为。 new_name 新的域名。 new_constraint_name 新的约束名。 new_owner 域的新所有者的用户名。 new_schema 域的新模式。
示例
添加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;
在一个域中从命名一个约束
ALTER DOMAIN zipcode RENAME CONSTRAINT zipchk TO zip_check;
将域移动到不同的模式:
ALTER DOMAIN zipcode SET SCHEMA customers;
兼容性
ALTER DOMAIN
符合SQL标准,除了
OWNER
, RENAME
, SET SCHEMA
, and
VALIDATE CONSTRAINT
变形,这些是Greenplum Database的扩展功能。 ADD CONSTRAINT
中的NOT VALID
变形也是Greenplum Database的扩展功能。
另见
[CREATE DOMAIN](CREATE_DOMAIN.html#topic1)
,
[DROP DOMAIN](DROP_DOMAIN.html#topic1)
Parent topic: SQL Command Reference