【问题标题】:2 unique key with one of them possible duplicate2 个唯一键,其中一个可能重复
【发布时间】:2016-02-27 02:33:28
【问题描述】:

您好,我想问一下是否可以设置 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,不如为他们两个创建唯一的 id。 OrderID 和 trans_date 以后不能和另一个相同。

有可能吗?

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。

标签: sql database duplicates unique-key


【解决方案1】:

最好的方法是拥有一个主键。您可以在 orderID 和 trans_date 上拥有一个复合主键,这将允许您拥有多个与 @Gordon 建议的值相同的 trans_date。

如果由于某种原因复合主键不适合您的目的,您可以在表上设置一个触发器来检查您想要的所有条件并允许事务进一步进行。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2021-03-31
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多