2016-02-27 61 views
0

你好,我想問一下,如果可以設置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

請用你正在使用的數據庫標記你的問題。 –

回答

1

如果你想兩個鍵是爲一對獨一無二的,那麼你就可以創建唯一索引:

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

或者,您可以創建一個唯一約束基本上做同樣的事情。

2

最好的辦法是有一個主鍵。你可以在orderID和trans_date上有一個複合主鍵,它可以讓你有多個與@Gordon建議的相同值的trans_date。

如果出於某種原因,複合主鍵不符合您的目的,您可以在表上設置一個觸發器來檢查所需的所有條件並允許事務繼續進行或不進行。

相關問題