日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ALTER DOMAIN

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的約束)。只有CHECK約束接受 NOT VALID。

DROP CONSTRAINT [ IF EXISTS ]這種形式刪除一個域上的約束。如果指定了IF EXISTS并且約束不存在,不會拋出錯誤。在這種情況下會轉而發出一個提示。

RENAME CONSTRAINT這種形式更改一個域上的一個約束的名稱。

VALIDATE CONSTRAINT這種形式驗證一個之前作為NOT VALID增加的約束,也就是說它驗證該域類型的表列中所有值滿足指定的約束。

OWNER這種形式更改域的擁有者為指定用戶。

RENAME這種形式更改域的名稱。

SET SCHEMA這種形式更改域的模式。任何與該域關聯的約束也被會移動到新的模式中。

要使用ALTER DOMAIN,你必須擁有該域。要更改一個域的模式, 你還必須具有新模式上的CREATE特權。要更改擁有者,你還必須是新擁有角色的一個直接或者間接成員,并且該角色必須具有該域的模式上的 CREATE特權(這些限制強制修改擁有者不能做一些通過刪除和重建域做不到的事情。不過,一個超級用戶怎么都能更改任何域的所有權。)。

語法

    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 | CURRENT_USER | SESSION_USER }
    ALTER DOMAIN name
        RENAME TO new_name
    ALTER DOMAIN name
        SET SCHEMA new_schema

參數

name要修改的一個現有域的名稱(可能是模式限定的)。

domain_constraint用于該域的新域約束。

constraint_name要刪除或重命名的一個現有約束的名稱。

NOT VALID不為約束的合法性驗證現有的存儲數據。

CASCADE自動刪除依賴于該約束的對象,并且接著刪除依賴于那些對象的所有對象。

RESTRICT如果有任何依賴對象則拒絕刪除該約束,這是默認行為。

new_name域的新名稱。

new_constraint_name約束的新名稱。

new_owner域的新擁有者的用戶名。

new_schema域的新模式。

說明

盡管ALTER DOMAIN ADD CONSTRAINT嘗試驗證現有存儲的數據是否滿足新約束,但此檢查不是萬無一失的,因為命令無法“see”新插入或更新但尚未提交的表行。 如果存在并發操作可能插入壞數據的危險,則處理方法是使用NOT VALID選項添加約束,提交該命令,等到所有事務在提交完成之前啟動,然后發出ALTER DOMAIN VALIDATE CONSTRAINT以搜索違反約束的數據。 此方法是可靠的,因為一旦提交約束,所有新事務都保證針對域類型的新值強制執行約束。

當前,如果域或者任何衍生域被數據庫中的任意表的一個容器類型列(組合、數組、范圍類型的列)使用,ALTER DOMAIN ADD CONSTRAINTALTER DOMAIN VALIDATE CONSTRAINTALTER DOMAIN SET NOT NULL將會失敗。這些命令最終將會被改進成能夠對這類嵌套值進行約束驗證。

示例

要把一個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;