2010-03-12 61 views
0

我有一個包含四列的表格:Col1,Col2,Col3和Col4。
Col1,Col2,Col3是字符串,而Col4是帶有自動遞增的整數主鍵。現在我的要求是有Col2和Col3的獨特組合。MySql中的唯一鍵

我的意思是說像。

Insert into table(Col1, Col2, Col3) Values ('val1', 'val2', 'val3'); 
Insert into table(Col1, Col2, Col3) Values ('val4', 'val2', 'val3'); 

第二條語句必須拋出錯誤,因爲表中存在'val2','val3'的相同組合。但我不能把它作爲主鍵,因爲我需要一個自動增量列,因此col4必須是主要的。請讓我知道我可以在桌面上看到的兩種方法。

+0

如果我試圖在第2列第3列中插入「VAL3」,和「VAL 2」 - 做你的業務規則允許以相反的順序值的對被視爲重複? – 2010-03-12 04:50:56

+0

是的,應該是可以的。 – Vinodtiru 2010-03-12 06:15:08

回答

1

您可以通過在這些字段上創建唯一索引來完成此操作。

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

從該文檔:

的唯一索引創建,使得索引中的所有值必須是不同的約束。如果嘗試使用與現有行匹配的鍵值添加新行,則會發生錯誤。此約束不適用於除BDB存儲引擎以外的NULL值。對於其他引擎,UNIQUE索引允許可以包含NULL的列的多個NULL值。如果您爲UNIQUE索引中的列指定前綴值,則列值在前綴中必須是唯一的。

0

我會檢查這些值作爲您的插入邏輯的一部分。在插入之前,喜歡寫東西......

if exists 
    select 1 from table 
    where col2 = inputCol2 and col3 = inputCol3 
then -- combo already exists 
    do nothing/set error 
else -- combo doesnt exist yet 
    insert into table