?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
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修改一個(gè)現(xiàn)有域的定義。它有幾種子形式:
這些表單其域設(shè)置或者刪除默認(rèn)值。請(qǐng)注意默認(rèn)值僅適用于隨后的INSERT命令; 他們并不影響已經(jīng)在使用該域的表中的行。
這些表單改變一個(gè)域是否標(biāo)記為允許NULL值或者是拒絕NULL值。在使用域的字段包含非NULL值的時(shí)候, 你只可以SET NOT NULL。
這種表單使用和CREATE DOMAIN一樣的語(yǔ)法向域中增加一種新的約束。 這樣做只有在所有使用域的字段滿足新約束的條件下才能成功。
這種形式刪除一個(gè)域上的約束。
這種形式把域的所有者改變?yōu)榱硗庖粋€(gè)用戶。
這個(gè)形式改變域的模式。任何與該域相關(guān)的約束都移動(dòng)到新的模式里。
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,您必須擁有該域。要修改一個(gè)域的模式, 您還必須在新模式上擁有CREATE權(quán)限。要修改所有者, 您還必須是新的所有角色的直接或間接成員,并且該成員必須在此域的模式上有CREATE權(quán)限。 這些限制強(qiáng)制了修改該所有者不會(huì)做任何通過刪除和重建域不能做的事情。不過,超級(jí)用戶可以以任何方式修改任意域的所有權(quán)。
一個(gè)要修改的現(xiàn)有域的名字(可以有模式修飾)。
域的新域約束
要?jiǎng)h除的舊有約束
級(jí)聯(lián)刪除依賴這個(gè)對(duì)象的約束
如果有任何依賴對(duì)象,則拒絕刪除約束。這是缺省行為。
域的新所有者的用戶名
域的新模式
目前,如果命名的域或者任何派生的域用于數(shù)據(jù)庫(kù)所有表的一個(gè)復(fù)合列中,那么 ALTER DOMAIN ADD CONSTRAINT和ALTER DOMAIN SET NOT NULL 將失敗。最終,他們應(yīng)該加以改進(jìn)以達(dá)到能夠驗(yàn)證這種嵌套列的新約束。
給一個(gè)域增加一個(gè)NOT NULL約束:
ALTER DOMAIN zipcode SET NOT NULL;
從一個(gè)域里刪除一個(gè)NOT NULL約束:
ALTER DOMAIN zipcode DROP NOT NULL;
向一個(gè)域里增加一個(gè)檢查約束:
ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
從一個(gè)域里刪除一個(gè)檢查約束:
ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;
把域移動(dòng)到另外一個(gè)模式:
ALTER DOMAIN zipcode SET SCHEMA customers;
除OWNER和SET SCHEMA變種(PostgreSQL的擴(kuò)展)之外, ALTER DOMAIN語(yǔ)句與SQL標(biāo)準(zhǔn)兼容。