SQL Server 主键必须是唯一的并且不是 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