2012-11-12 35 views
1

可能重複:
How do I specify unique constraint for multiple columns in MySQL?mySQL如何防止插入,除非兩列(字段)的組合是唯一的?

我新的MySQL和有我轉換到MySQL表中包含「秩序的導遊」這是所有項目的帳戶賬戶通常是訂單。我需要防止在某個帳戶的產品(產品編號)的情況下插入某個帳戶的訂單指南表中,該表格取決於兩個字段的唯一性的組合。在訂購指南表格中的數據的簡單的例子:

uID Account_Num Prod_Num 
0 1000   2000 
1 1000   2010 
2 1000   2020 
3 1000   2030 
4 1001   2000 
5 1001   2010 
6 1001   2020 
7 1001   2021 

我不能只讓「ACCOUNT_NUM」和獨特的「Prod_Num」領域。我需要一種方法來設置一個規則或某些東西來指定「Account_Num」和「Prod_Num」的組合是否是唯一的允許插入。 uID字段是唯一的自動增量字段。這可能嗎?

回答

10

你會很高興知道,索引可以是多列:-)

ALTER TABLE my_table ADD UNIQUE account_prod (Account_Num, Prod_Num); 
+0

真棒!謝謝!我沒有意識到獨特的索引是一種規則。 – LukeS

1
create unique index mytable_idx1 on mytable(Account_Num, Prod_Num); 
0

肯定。

看一看

INSERT INTO <yourtable> (cols) 
    SELECT cols FROM <yourtable2>, <yourtable> where <yourcondition> 

確保選擇只返回新條目。