gpt4 book ai didi

sql - Oracle 约束 : mix unique and check constraints

转载 作者:行者123 更新时间:2023-12-02 01:51:04 26 4
gpt4 key购买 nike

我面临以下问题:我想混合使用唯一约束和检查约束。

它可能更多的是业务逻辑而不是数据库的责任,但仍然如此。

我有一个具有以下结构的表:

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 的两个保险,只要期间不相互交叉即可。

这种问题有解决办法吗?

感谢任何提示!

干杯什锦早餐

最佳答案

您可能需要一个基于函数的约束。我不会在这里详细介绍,因为那里已经有大量资源——只需谷歌“基于 Oracle 函数的约束”,您就会得到很多。但是,我不想推测性能影响 - 我认为您关于它可能应该是业务逻辑的说法是 100% 正确的。不要将垃圾数据扔到您的数据库中,从源头上拒绝它。

关于sql - Oracle 约束 : mix unique and check constraints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22630482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com