【发布时间】:2014-03-25 09:36:54
【问题描述】:
我面临以下问题: 我想创建一个独特的和检查约束的组合。
这可能比数据库的责任更多的是业务逻辑,但仍然如此。
我有一个具有以下结构的表:
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 的保险,只要期间不相互交叉。
这类问题有解决办法吗?
感谢任何提示!
干杯穆埃拉
【问题讨论】:
-
这是一个非常重要的问题,而且很容易出错 - 请参阅 jeffkemponoracle.com/2012/08/30/… 了解选项。
标签: sql oracle constraints unique-constraint check-constraint