2个独特的密钥,其中一个可能重复

问题描述:

你好,我想问一下,如果可以设置2个唯一的密钥,并且在某些情况下,其中一个可以重复,但另一个不可以。2个独特的密钥,其中一个可能重复

的例子是这样的:

orderID   trans_date 
    1   2016-02-25 01:00:00 
    1   2016-02-25 01:00:01 
    2   2016-02-25 01:00:00 

正如你可以看到,如果我只能让trans_date一个独特的键,然后它可以重复,它也一样orderID。 因此,不要为其中一个创建唯一的ID,为什么不为他们创建。 OrderID和trans_date不能与其他日期相同。

可能吗?

+0

请用你正在使用的数据库标记你的问题。 –

如果你想两个键是为一对独一无二的,那么你就可以创建唯一索引:

create unique index unq_example_orderid_transdate on example(orderID, trans_date); 

或者,您可以创建一个唯一约束基本上做同样的事情。

最好的办法是有一个主键。你可以在orderID和trans_date上有一个复合主键,它可以让你有多个与@Gordon建议的相同值的trans_date。

如果出于某种原因,复合主键不符合您的目的,您可以在表上设置一个触发器来检查所需的所有条件并允许事务继续进行或不进行。