2个唯一键,其中一个可能重复

时间:2016-02-27 02:33:28

标签: sql database duplicates unique-key

您好我想询问是否可以设置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之后不能相同。

有可能吗?

2 个答案:

答案 0 :(得分:2)

最好的办法是拥有一把主键。您可以在orderID和trans_date上使用复合主键,这样您就可以拥有多个与@Gordon建议的值相同的trans_date。

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

答案 1 :(得分:1)

如果您希望两个键作为一对唯一,那么您可以创建一个唯一索引:

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

或者,您可以创建一个基本相同的唯一约束。