次の問題に直面しています。一意の制約とチェック制約を組み合わせて作成したいと思います。
おそらく、DB の責任よりもビジネス ロジックの方が重要ですが、それでもなおです。
次の構造のテーブルがあります。
desc INSURANCE;
Name Null Typ
----------------- -------- -------------
ID NOT NULL NUMBER
CUST_ID NOT NULL NUMBER
CONTRACT_TYPE NOT NULL NUMBER
FROM_DATE NOT NULL DATE
TO_DATE NOT NULL DATE
デザイン自体は間違っているかもしれませんが、あくまで一例です。
この方法で制約を設定したいと思います。
alter table INSURANCE
add constraint unique(CUST_ID, CONTRACT_TYPE)
and check (FROM_DATE not between FROM_DATE and TO_DATE)
and check (TO_DATE not between FROM_DATE and TO_DATE) ;
つまり、期間が互いに交差しない限り、同じ CUST_ID と CONTRACT_TYPE を持つ 2 つの保険を持つことができます。
この種の問題の解決策はありますか?
ヒントをありがとう!
乾杯ムエラ