2011-06-01 25 views
0

如何執行約束檢查以確保給定的值組合是唯一的,但可以輸入任意次數?確保值的組合是唯一的,但輸入任意次數 - Mysql

示例:我有兩列:Group_IDGroup_Name。所以Group_ID = 1的所有數據將始終有Group_Name as 'Test1'。我想要阻止的是有人輸入'Test2'Group_Name,其中Group_ID=1。這應該會導致插入失敗。所有這些數據都直接加載到數據庫中而沒有任何用戶界面,因此我無法在應用程序中執行這些檢查。所以我需要的是:

對多個列的唯一約束,但僅限於給定的組合,而不檢查它們輸入的次數。

有沒有建立在Mysql的任何東西來做到這一點?

回答

2

你應該正常化你的表。 group_id,group_name對應在一個單獨的表格中,該表格定義了您的組,然後您正在使用的表格應該只有group_id。然後,您可以將表中的外鍵添加到組表中以確保您的group_id值參考真實組。

如果您無法規範化表格,那麼您可能必須使用插入之前和更新觸發器之前,以確保Group_IDGroup_Name始終按照需要組合在一起。