2 个唯一密钥,其中一个可能重复
2 unique key with one of them possible duplicate
你好,我想问一下是否可以设置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 后面不能相同。
可能吗?
如果你希望两个键作为一对是唯一的,那么你可以创建一个唯一索引:
create unique index unq_example_orderid_transdate on example(orderID, trans_date);
或者,您可以创建一个唯一约束,其作用基本相同。
最好的方法是拥有一个主键。您可以在 orderID 和 trans_date 上有一个复合主键,这将允许您拥有多个 trans_date 与@Gordon 建议的值相同。
如果出于某种原因,复合主键不适合您的目的,您可以在 table 上设置一个触发器来检查您想要的所有条件,并允许交易继续进行或不进行。
你好,我想问一下是否可以设置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 后面不能相同。
可能吗?
如果你希望两个键作为一对是唯一的,那么你可以创建一个唯一索引:
create unique index unq_example_orderid_transdate on example(orderID, trans_date);
或者,您可以创建一个唯一约束,其作用基本相同。
最好的方法是拥有一个主键。您可以在 orderID 和 trans_date 上有一个复合主键,这将允许您拥有多个 trans_date 与@Gordon 建议的值相同。
如果出于某种原因,复合主键不适合您的目的,您可以在 table 上设置一个触发器来检查您想要的所有条件,并允许交易继续进行或不进行。