2012-05-17 75 views
0

如果我有一個人員表,其中有兩個字段(名稱和地址)。檢查約束內的子查詢

create table PERSON (
NAME     VARCHAR2(50), 
ADDRESS    VARCHAR2(100) 
); 

如何確保具有相同地址的所有人都有不同的名稱。

我試圖用CHECK約束,有使用CREATE TABLE語句中的子查詢在網絡上的一些例子,但我得到了一個SQL錯誤:

ORA-02251: subquery not allowed here

任何幫助,將不勝感激。 謝謝

+0

一個唯一的名稱,地址索引應該做的。所以你不能插入兩次相同的名稱/地址組合。而另一方面則意味着同一地址的所有名稱必須不同。 –

回答

1

您不能將行保留在檢查約束中。你可以使用觸發器來達到這個目的。

+0

我認爲一個獨特的約束(根據@ a_horse_with_no_name的評論)比一羣觸發器更清潔。 – wildplasser