2013-10-06 55 views
0

我該如何實現這種唯一性......沒有列唯一唯一行,例如。 ID#2在十月的記錄,ID#2不得有res_month 2信息=「十一」選擇一個唯一的行

res_id | res_month | res_year 
    1 | September | 2013 
    2 | September | 2013 
    3 | September | 2013 
    4 | September | 2013 
    2 | October | 2013 
    3 | October | 2013 
    4 | October | 2013 
+1

添加唯一約束RES_ID列 – Deepak

+0

你想確保唯一的記錄將在你的數據庫的RES_ID列輸入(通過迪帕克爲假設)或者你想在你的VB.NET應用程序中獲得唯一的記錄,即使res_id列可能包含重複的值? (asantaballa假設)?如果你的意思是第一個選項,你應該刪除VB.NET標籤以避免混淆。請澄清。 – varocarbas

+0

我明白了。請記住,在這些情況下(列中包含唯一整數)的常見過程依賴於「自動增量」(http://dev.mysql.com/doc/refman/5.0/en/example-自動increment.html)。 PS:也許你應該嘗試與打算幫助你的人(回答者和我)進行更多的交流。你甚至不需要這樣做以表示你的尊重和讚賞,而僅僅是出於冷靜,實際的原因:快速準確地溝通你想要的東西往往會明顯加速幫助過程(也不要忘記幫手可能不會感覺像再次幫助你)。 – varocarbas

回答

0

添加唯一約束RES_ID列 這不會允許RES_ID列

1
重複值

你可以建立一個UNIQUE KEY contraint在多個領域:

ALTER TABLE tbl ADD UNIQUE KEY foo (res_id, res_month, res_year); 

foo僅僅是該限制的名字 - 你可能想選擇一個更明確的名稱)

該約束確保每個組合res_id,res_monthres_year只能出現一次。

由於存在此問題,INSERT與已存儲的組合產生了Unique constraint failed錯誤。在你的榜樣,因爲該組合已經存在,這會失敗:

INSERT INTO tbl (res_id, res_month, res_year) VALUES (2, 'October', '2013');