CREATE DOMAIN(7) SQL Commands CREATE DOMAIN(7)

CREATE DOMAIN - 定義一個新域

CREATE DOMAIN name [AS] data_type
    [ DEFAULT expression ]
    [ constraint [ ... ] ]
where constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression) }

CREATE DOMAIN 建立一個新的資料域。 定義域的使用者成為其所有者。


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


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


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

域的下層資料型別。它可以包含陣列宣告字。
DEFAULT 子句為域資料型別的欄位宣告一個預設值。 該值是任何不含變數的表示式(但不允許子查詢)。 預設表示式的資料型別必需匹配域的資料型別。如果沒有宣告預設值, 那麼預設值就是空值。


預設表示式將用在任何不為該欄位宣告數值的插入操作。 如果為特定的欄位聲明瞭預設值,那麼它覆蓋任何和該域相關聯的預設值。 然後,域的預設覆蓋任何與下層資料型別相關的預設。


一個約束的可選名稱。如果沒有宣告,系統生成一個名字。

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

這個域的數值允許為空。它是預設。


這個子句只是用於和非標準的 SQL 資料庫相容用。 我們不建議在新的應用中使用它。


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


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


這個例子建立了 country_code 資料型別並且在一個表定義中使用了該型別:

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

CREATE DOMAIN 命令符合 SQL 標準。

DROP DOMAIN [drop_domain(7)]

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

2003-11-02 SQL - Language Statements