我在sql server中有一個表有重複的ID,但是我無法刪除那些重複的記錄。現在需要在那個有重複數據的列上創建主鍵。有沒有辦法在不改變數據的情況下創建主鍵。在sql server中創建主鍵
0
A
回答
0
不,沒有辦法將PRIMARY KEY約束添加到已具有重複值的列。
Creating and Modifying PRIMARY KEY Constraints:
當PRIMARY KEY約束添加到現有列或表 列,數據庫引擎檢查現有列 數據和元數據,以確保以下規則主 鍵:
- 列不允許空值。
- 不能有重複值。
如果PRIMARY KEY約束添加到具有重複值或允許空值,將 數據庫引擎將返回一個錯誤,並且不加約束 列。
如果ID
列是漸進的,那麼一個可能的解決方法是增加一個獨特的過濾指數:
CREATE UNIQUE INDEX AK_MyUniqueIndex ON dbo.MyTable (ID)
WHERE ID > ... max value of existing ID here
這種方式,獨特性將僅適用於新添加的記錄。
+0
同樣的事情,我們可以在oracle中做到這一點,沒有驗證語法和相同我們正在研究SQL Server的一些事情。 – 2015-02-11 07:21:37
+0
@prashant_ora我不認爲這在SQL Server中是可行的。你只能用'CHECK'約束來做到這一點。 – 2015-02-11 07:26:52
相關問題
- 1. 在沒有主鍵的現有表上創建主鍵在SQL Server中
- 2. 在SQL Server中創建主密鑰
- 3. 如何在SQL Server 2008中創建複合主鍵
- 4. 如何在SQL Server中使用2個主鍵創建表?
- 5. 在SQL Server Management Studio中創建外鍵
- 6. 創建新外鍵(SQL Server)
- 7. 在SQL Server上創建的主鍵未被識別
- 8. SQL Server主鍵/外鍵
- 9. SQL Server Express:創建數據庫表後無法添加主鍵
- 10. 創建SQL Server中
- 11. SQL Server創建多個外鍵
- 12. SQL Server幫助創建外鍵關係
- 13. SQL Server使用外鍵創建表
- 14. SQL Server查看主鍵
- 15. SQL Server複合主鍵
- 16. SQL Server添加主鍵
- 17. SQL Server Adventureworks SalesOrderDetail表主鍵
- 18. 將SQL標識創建爲主鍵?
- 19. h2 sql,用多列主鍵創建表?
- 20. 在表上創建主鍵
- 21. Guid主鍵/外鍵兩難SQL Server
- 22. 在SQL Server更改主鍵列
- 23. 更改SQL Server 2005中的主鍵值
- 24. 在數據庫中創建「主」的SQL Server否認2008 R2
- 25. 在SQL Server 2005主數據庫中創建表
- 26. SQL Server從表中選擇主鍵包含多列的主鍵
- 27. 在SQL Server中創建具有非唯一列的外鍵
- 28. 主鍵的SQL數據類型 - SQL Server?
- 29. 未創建GUID主鍵
- 30. 如何創建SQL Server中的自定義字母數字的主鍵2005
不可以。任何關鍵點(主要或次要)的全部要點是它可以用來*唯一地識別行。因此,您的要求「創建主鍵(*在現有的列*)」和「不更改數據」是相反的。您不能同時滿足 – 2015-02-11 07:01:47
主密鑰見證uniqness,因此您無法在dublicate數據列上創建主密鑰。相反,您需要創建一個具有標識的新列,在此列上您可以創建主鍵。 – Immu 2015-02-11 07:17:04
不,我必須在該列上創建主鍵,以便在驗證主鍵時繞過現有記錄,並在新記錄驗證時記錄錯誤,並在出現重複記錄時提供錯誤。 – 2015-02-11 07:35:36