2011-09-02 74 views
1

我試圖在SQL Server 2008中的一個數據庫表上添加一個新的唯一索引。這是一個現有表和我希望唯一索引已經有一些重複的列值。已有數據庫表中的唯一索引

我可以爲該列設置唯一索引嗎?如果是這樣,怎麼樣?

回答

0

如果列已經有重複的值,那麼我會建議你創建一個獨特的複合鍵代替。

例如 因此,要處理這個問題與此表的設計,你需要在表上創建客戶ID唯一約束/產品ID列:

創建CustomerProducts唯一索引cust_products_unique(客戶ID,產品ID)

因此,在本質上字段的組合確保索引是唯一的。

問候

3

如果表中已經有重複值,則不能使用UNIQUE索引設置此列,除非您刪除包含該列重複值的記錄。這轉到UNIQUE的定義。

1

沒有顧名思義,唯一的索引說,關鍵必須是唯一的。所以,你不能

See this

4

首先,你是要去需要刪除您列重複的值,然後就可以在其上創建唯一索引。所以我們假設你的表有2列,idcolumn1。要刪除重複值,您需要選擇一個,它可以是隨機的或有一定的順序。因此,這將是這樣的:

WITH CTE AS 
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY column1 ORDER BY Id) Corr 
    FROM YourTable 
) 
DELETE FROM CTE 
WHERE Corr > 1 

CREATE UNIQUE INDEX I_Unique ON YourTable(Column1) 
0

可能不會在SQL Server 2008是真實的,但是你可以使用Management Studio這樣做在以後的版本,如2014年

  1. 右鍵點擊你的表
  2. 選擇展開「標識規範」設計
  3. ,並設置(是身份)爲是
  4. 保存
相關問題