2016-06-30 91 views
0

我正在Oracle工作。我有兩個表,一個帶有ID列和詳細表的主表,帶有ID列,主表的外鍵和名稱列。制定取決於另一個表的檢查約束

MASTER 
-------- 
ID 

格式化休息

DETAIL 
------------- 
ID 
MASTER_ID 
NAME 

我想給定主機的所有子細節有唯一的名字。不過,名稱並不是唯一的。不同主人的兩個細節可能具有相同的名稱。

我想我可以用一個檢查約束來做到這一點,但我正在努力如何對它進行描述。

回答

2

這聽起來不像你想要的check約束。這聽起來像你想的唯一約束

alter table detail_table 
    add constraint name_uniq_within_master unique(master_id, name); 

這將阻止你有兩行具有相同namemaster_id但允許使用相同的name和不同master_id值的行。

+0

我覺得那樣做會好,謝謝。 – monknomo