.\" auto-generated by docbook2man-spec $Revision: 1.1 $ .TH "CREATE DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands" .SH NAME CREATE DOMAIN \- 定義一個新域 .SH SYNOPSIS .sp .nf CREATE DOMAIN \fIname\fR [AS] \fIdata_type\fR [ DEFAULT \fIexpression\fR ] [ \fIconstraint\fR [ ... ] ] where \fIconstraint\fR is: [ CONSTRAINT \fIconstraint_name\fR ] { NOT NULL | NULL | CHECK (\fIexpression\fR) } .sp .fi .SH "DESCRIPTION 描述" .PP \fBCREATE DOMAIN\fR 創建一個新的數據域。 定義域的使用者成為其所有者。 .PP 如果給出一個模式名稱(比如,CREATE DOMAIN myschema.mydomain ...), 那麼該域是在指定的模式中創建的。否則它會在當前模式中創建。 域名字必需在其所在模式中的現有類型和域中唯一。 .PP 域可以便於我們把不同表之間的公共域抽取到一個位置進行維護。 比如,一個電子郵件地址字段可能在多個表中使用,所有的都是同樣的屬性。 我們可以定義並使用一個域,而不是分別設置每個表的約束。 .SH "PARAMETERS 參數" .TP \fB\fIname\fB\fR 要創建的域名字(可以有模式修飾)。 .TP \fB\fIdata_type\fB\fR 域的下層數據類型。它可以包含數組聲明字。 .TP \fBDEFAULT \fIexpression\fB\fR DEFAULT 子句為域數據類型的字段聲明一個預設值。 該值是任何不含變量的表達式(但不允許子查詢)。 預設表達式的數據類型必需匹配域的數據類型。如果沒有聲明預設值, 那麼預設值就是空值。 預設表達式將用在任何不為該字段聲明數值的插入操作。 如果為特定的字段聲明了預設值,那麼它覆蓋任何和該域相關聯的預設值。 然後,域的預設覆蓋任何與下層數據類型相關的預設。 .TP \fBCONSTRAINT \fIconstraint_name\fB\fR 一個約束的可選名稱。如果沒有聲明,系統生成一個名字。 .TP \fBNOT NULL\fR 這個域的數值不允許為 NULL。 .TP \fBNULL\fR 這個域的數值允許為空。它是預設。 這個子句只是用於和非標準的 SQL 數據庫相容用。 我們不建議在新的應用中使用它。 .TP \fBCHECK (\fIexpression\fB)\fR CHECK 子句聲明完整性約束或者是測試,域地數值必須滿足這些要求。 每個約束必須是一個生成一個布爾結果的表達式。它應該使用名字 VALUE 來引用被測試的數值。 目前,CHECK 表達式不能包含子查詢,也不能引用除 VALUE 之外的變量。 .SH "EXAMPLES 例子" .PP 這個例子創建了 country_code 數據類型並且在一個表定義中使用了該類型: .sp .nf CREATE DOMAIN country_code char(2) NOT NULL; CREATE TABLE countrylist (id integer, country country_code); .sp .fi .SH "COMPATIBILITY 相容性" .PP \fBCREATE DOMAIN\fR 命令符合 SQL 標準。 .SH "SEE ALSO 參見" DROP DOMAIN [\fBdrop_domain\fR(7)] .SH "譯者" .B Postgresql 中文網站 .B 何偉平