| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
CREATE DOMAIN name [AS] data_type
[ DEFAULT default_expr ]
[ constraint [ ... ] ]
這裡 constraint 是︰
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression)}CREATE DOMAIN 創建一個新的數據域。 定義域的用戶成為其所有者。
如果給出一個模式名稱(比如,CREATE DOMAIN myschema.mydomain ...), 那麼該域是在指定的模式中創建的。否則它會在當前模式中創建。 域名字必需在其所在模式中的現有類型和域中唯一。
域可以便于我們把不同表之間的公共域抽取到一個位置進行維護。 比如,一個電子郵件地址字段可能在多個表中使用,所有的都是同樣的屬性。 我們可以定義並使用一個域,而不是分別設置每個表的約束。
要創建的域名字(可以有模式修飾)。
域的下層數據類型。它可以包含數組聲明字。
DEFAULT 子句為域數據類型的字段聲明一個缺省值。 該值是任何不含變量的表達式(但不允許子查詢)。 缺省表達式的數據類型必需匹配域的數據類型。如果沒有聲明缺省值, 那麼缺省值就是空值。
缺省表達式將用在任何不為該字段聲明數值的插入操作。 如果為特定的字段聲明了缺省值,那麼它覆蓋任何和該域相關聯的缺省值。 然後,域的缺省覆蓋任何與下層數據類型相關的缺省。
一個約束的可選名稱。如果沒有聲明,系統生成一個名字。
這個域的數值不允許為 NULL。
這個域的數值允許為空。它是缺省。
這個子句只是用于和非標準的 SQL 數據庫兼容用。 我們不建議在新的應用中使用它。
CHECK 子句聲明完整性約束或者是測試,域地數值必須滿足這些要求。 每個約束必須是一個生成一個布爾結果的表達式。它應該使用名字 VALUE 來引用被測試的數值。
目前,CHECK 表達式不能包含子查詢,也不能引用除 VALUE 之外的變量。