CREATE DOMAIN - 定義一個新域


SYNOPSIS

 

CREATE DOMAIN name [AS] data_type
    [ DEFAULT expression ]
    [ constraint [ ... ] ]

where constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression) }

DESCRIPTION 描述

CREATE DOMAIN 創建一個新的數據域。 定義域的用戶成為其所有者。


 如果給出一個模式名稱(比如,CREATE DOMAIN myschema.mydomain ...), 那么該域是在指定的模式中創建的。否則它會在當前模式中創建。 域名字必需在其所在模式中的現有類型和域中唯一。


 域可以便於我們把不同表之間的公共域抽取到一個位置進行維護。 比如,一個電子郵件地址字段可能在多個表中使用,所有的都是同樣的屬性。 我們可以定義並使用一個域,而不是分別設置每個表的約束。

PARAMETERS 參數

name

 要創建的域名字(可以有模式修飾)。
data_type

 域的下層數據類型。它可以包含數組聲明字。
DEFAULT expression
DEFAULT 子句為域數據類型的字段聲明一個缺省值。 該值是任何不含變量的表達式(但不允許子查詢)。 缺省表達式的數據類型必需匹配域的數據類型。如果沒有聲明缺省值, 那么缺省值就是空值。


 缺省表達式將用在任何不為該字段聲明數值的插入操作。 如果為特定的字段聲明了缺省值,那么它覆蓋任何和該域相關聯的缺省值。 然后,域的缺省覆蓋任何與下層數據類型相關的缺省。

CONSTRAINT constraint_name

 一個約束的可選名稱。如果沒有聲明,系統生成一個名字。
NOT NULL

 這個域的數值不允許為 NULL。
NULL

 這個域的數值允許為空。它是缺省。
 
 這個子句只是用於和非標准的 SQL 數據庫兼容用。 我們不建議在新的應用中使用它。
CHECK ( expression )

 CHECK 子句聲明完整性約束或者是測試,域地數值必須滿足這些要求。 每個約束必須是一個生成一個布爾結果的表達式。它應該使用名字 VALUE  來引用被測試的數值。


 目前,CHECK 表達式不能包含子查詢,也不能引用除 VALUE 之外的變量。

EXAMPLES 例子


 這個例子創建了 country_code 數據類型並且在一個表定義中使用了該類型:

 

CREATE DOMAIN country_code char(2) NOT NULL;
CREATE TABLE countrylist (id integer, country country_code);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM