2012-12-21 23 views
-3

我通過我的講稿讀,我看到了一個SQL語法:CREATE DOMAIN - 此語法存在哪種sql?

CREATE DOMAIN BranchNo AS CHAR(4) 
CHECK (VALUE IN (SELECT branchNo FROM Branch)); 

第一個問題是......這DBMS支持創建域? MySQL的?訪問? ..?

第二個問題是......上面的語法究竟做了什麼?

非常感謝

+2

[PostgreSQL](http://www.postgresql.org/docs/9.1/static/sql-createdomain.html) –

+1

嗯......首先Google搜索結果爲「CREATE DOMAIN sql」爲您提供了一個很好的答案。也許先嚐試一下? –

+2

對我而言,第一個谷歌搜索結果就是這個問題;) –

回答

7

的Postgres

PostgreSQL支持CREATE DOMAIN

CREATE DOMAIN創建一個新的域。域本質上是一個具有可選約束的數據類型(對允許的一組值的限制)。定義域的用戶成爲其所有者。

域對於將字段常用約束抽象到單個位置進行維護非常有用。例如,多個表可能包含電子郵件地址列,所有這些列都需要相同的CHECK約束來驗證地址語法。定義一個域,而不是單獨設置每個表的約束。

我知道這是因爲"CREATE DOMAIN" sql告訴我。

+0

對,非常感謝您的信息。我想我只是習慣於沒有這些約束,他們似乎是有用的...通常當我創建一個表,我只是在CREATE TABLE中定義數據類型...從來沒有見過這個CREATE DOMAIN之前。 – jonprasetyo

+0

好吧,它與在另一個dbms中的表上放置觸發器並沒有多大區別。它本質上提供了在數據存儲之前過濾和驗證數據的機會。 –