ALTER DOMAIN

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
  

描述

ALTER DOMAIN 修改一個現有域的定義。 它有幾種子形式:

SET/DROP DEFAULT

這些形式設置或者刪除一個域的預設值。請注意預設只適用於隨後的 INSERT 命令;他們並不影響使用該域已經在資料表中的行。

SET/DROP NOT NULL

這些形式改變一個域是否標記為允許 NULL 值或者是拒絕 NULL 值。 在使用域的字串包含非空的值的時候,您只可以 SET NOT NULL

ADD domain_constraint

這種形式向域中增加一種新的約束,使用的語法和 CREATE DOMAIN 一樣。這樣做只有在所有使用域的字串滿足新的約束的條件下才能成功。

DROP CONSTRAINT

這種形式刪除一個域上的約束。

OWNER

這種形式把域的所有者改變為另外一個用戶。

要使用 ALTER DOMAIN,您必須擁有該域;但是使用 ALTER DOMAIN OWNER 的時候您必須是資料庫超級用戶。

參數

name

一個要修改的現有域的名字(可以有模式修飾)。

domain_constraint

域的新的域約束。

constraint_name

要刪除的現有約束。

CASCADE

自動刪除依賴這個對象的約束。

RESTRICT

如果有任何依賴對象,則拒絕刪除約束。這是預設行為。

new_owner

域的新所有者的用戶名。

例子

給一個域增加一個 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 語句與 SQL:1999 兼容, 除 OWNER 變種之外,這個變種是 PostgreSQL 的擴展。