一個SQL Server主鍵必須是獨特和NOT NULL。因此,您看到重複數據的列不能成爲自己的主鍵。正如urlreader所建議的,它必須是包含一個或多個其他列的複合主鍵的一部分。
如何確定組成表的主鍵:在企業管理器中,展開表,然後展開「列」。主鍵列旁邊會有一個「關鍵」符號。您還會看到「PK」之列描述後,像這樣:
MyFirstIDColumn (PK, int, not null)
MySecondIDColumn (PK, int, not null)
一旦你知道哪些列構成主鍵,只需確保您插入唯一的數據組合成列。所以,對於我上面的示例表,這將是:
INSERT INTO MyTable (MyFirstIDColumn, MySecondIDColumn) VALUES (1,1) --SUCCEED
INSERT INTO MyTable (MyFirstIDColumn, MySecondIDColumn) VALUES (1,2) --SUCCEED
INSERT INTO MyTable (MyFirstIDColumn, MySecondIDColumn) VALUES (1,1) --FAIL because of duplicate (1,1)
INSERT INTO MyTable (MyFirstIDColumn, MySecondIDColumn) VALUES (1,3) --SUCCEED
更多關於主鍵:
http://msdn.microsoft.com/en-us/library/ms191236%28v=sql.105%29.aspx
取下PK /唯一約束。 – 2013-04-25 17:35:34
請發佈該表的創建腳本以及所謂的重複數據的子集。 – Quassnoi 2013-04-25 17:37:41
是否有可能主鍵實際上是該列和另一列的組合? – urlreader 2013-04-25 18:27:28