2016-06-30 7 views
0

私はOracleで作業しています。私は2つのテーブル、IDカラムと詳細テーブルを持つマスターテーブル、IDカラム、マスターテーブルへの外部キー、および名前列を持っています。ブレーク別のテーブルに依存するチェック制約を作成する

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

をフォーマット

MASTER 
-------- 
ID 

私は与えられたマスターのすべての子の詳細は、ユニークな名前を持っていると思います。しかし、名前は一意ではありません。異なるマスタを持つ2つの詳細に同じ名前が付いている可能性があります。

私はこれをチェック制約で行うことができますが、私はそれをどのようにフレーズするかに苦労しています。

答えて

2

checkという制約が必要なようには聞こえません。あなたは同じnamemaster_idを持つ2つの列を有するからあなたを防ぐためだろうが、同じnameと異なるmaster_id値を持つ行を可能にするユニーク制約

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

をしたいように聞こえます。

+0

私はそれがトリックを行うと思います、ありがとうございます。 – monknomo

関連する問題