跳转至

ALTER DOMAIN

ALTER DOMAIN

更改现有域的定义。

语法

``` sql 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
此形式修改一个现有域的属主到特定的用户
RENAME
此形式将域的名称修改为新的名称。
SET SCHEMA
此形式更改域的模式。与域相关联的任何约束也被移动到新的模式中。

用户必须拥有域才能ALTER DOMAIN. 要更改域的模式,用户还必须对新模式具有 CREATE 权限要更改所有者,用户还必须是新拥有角色的直接或间接成员,并且该角色必须对该域的模式具有CREATE权限。这些限制强制修改拥有者不能做一些通过删除和重建域做不到的事情。不过,一个超级用户能更改任何域的所有权。)。

参数

该SQL命令参数说明见下

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, VALIDATE CONSTRAINT 变形,这些是SeaboxMPP的扩展功能。 ADD CONSTRAINT中的NOT VALID变形也是SeaboxMPP的扩展功能。
相关SQL命令
CREATE DOMAIN, DROP DOMAIN