?
This document uses PHP Chinese website manual Release
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 name SET SCHEMA new_schema
ALTER DOMAIN修改一個現(xiàn)有域的定義。它有幾種子形式:
這些表單其域設(shè)置或者刪除默認(rèn)值。請注意默認(rèn)值僅適用于隨后的INSERT命令; 他們并不影響已經(jīng)在使用該域的表中的行。
這些表單改變一個域是否標(biāo)記為允許NULL值或者是拒絕NULL值。在使用域的字段包含非NULL值的時候, 你只可以SET NOT NULL。
這種表單使用和CREATE DOMAIN一樣的語法向域中增加一種新的約束。 這樣做只有在所有使用域的字段滿足新約束的條件下才能成功。
這種形式刪除一個域上的約束。
這種形式把域的所有者改變?yōu)榱硗庖粋€用戶。
這個形式改變域的模式。任何與該域相關(guān)的約束都移動到新的模式里。
You must own the domain to use ALTER DOMAIN. To change the schema of a domain, you must also have CREATE privilege on the new schema. To alter the owner, you must also be a direct or indirect member of the new owning role, and that role must have CREATE privilege on the domain's schema. (These restrictions enforce that altering the owner doesn't do anything you couldn't do by dropping and recreating the domain. However, a superuser can alter ownership of any domain anyway.)
要使用ALTER DOMAIN,您必須擁有該域。要修改一個域的模式, 您還必須在新模式上擁有CREATE權(quán)限。要修改所有者, 您還必須是新的所有角色的直接或間接成員,并且該成員必須在此域的模式上有CREATE權(quán)限。 這些限制強制了修改該所有者不會做任何通過刪除和重建域不能做的事情。不過,超級用戶可以以任何方式修改任意域的所有權(quán)。
一個要修改的現(xiàn)有域的名字(可以有模式修飾)。
域的新域約束
要刪除的舊有約束
級聯(lián)刪除依賴這個對象的約束
如果有任何依賴對象,則拒絕刪除約束。這是缺省行為。
域的新所有者的用戶名
域的新模式
目前,如果命名的域或者任何派生的域用于數(shù)據(jù)庫所有表的一個復(fù)合列中,那么 ALTER DOMAIN ADD CONSTRAINT和ALTER DOMAIN SET NOT NULL 將失敗。最終,他們應(yīng)該加以改進(jìn)以達(dá)到能夠驗證這種嵌套列的新約束。
給一個域增加一個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 SET SCHEMA customers;
除OWNER和SET SCHEMA變種(PostgreSQL的擴展)之外, ALTER DOMAIN語句與SQL標(biāo)準(zhǔn)兼容。