我正面臨以下問題: 我想創建一個獨特和檢查約束的混合體。Oracle約束:混合唯一性和檢查約束條件
這可能比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,只要時間不互相交叉。
有沒有解決這類問題的方法?
感謝您的任何提示!
Cheers muellae
這是一個不平凡的問題,很容易出錯 - 請參閱http://jeffkemponoracle.com/2012/08/30/non-overlapping-dates-constraint/瞭解選項。 –