テーブルに A、B、C の 3 つの列があるとします。列 A に値 (たとえば x) を挿入する場合、B または C のいずれかが x に等しいタプルを挿入できないようにしたいと考えています。 、つまり、値 x は、すべてのタプルについて列 A に対して一意のままにする必要があります。
x は、他のタプルの A で繰り返すことができることに注意してください。
SQL の UNIQUE 句は知っていますが、これは値が特定の列に 1 回だけ出現するようにするためのものです。Oracle の CHECK ステートメントではサブクエリが許可されていないため、これを実装する方法がわかりません。
編集(さらに情報を追加するため)
主キーは Employee_Number で、問題の 3 つの列は LandlineNo、MobileNo、VOIP です。したがって、これが 1 つのエントリであるとします。
Employee_Number = 1, LandlineNo = x, MobileNo = y, VOIP = z
次に、別のタプルのこのエントリは許可されません -
Employee_Number = 2, LandlineNo = a, MobileNo = x, VOIP = c
一方、これは問題ありません(はい、2人の従業員が同じタイプの同じ番号を持つことができます)
Employee_Number = 2, LandlineNo = x, MobileNo = b, VOIP = c