在sql server中创建主键

时间:2015-02-11 06:57:11

标签: sql-server

我在sql server中有一个表有重复的ID,但我无法删除那些重复的记录。现在要求是在该列上创建具有重复数据的主键。有没有办法在不更改数据的情况下创建主键。

1 个答案:

答案 0 :(得分:0)

不,没有办法向已经有重复值的列添加PRIMARY KEY约束。

Creating and Modifying PRIMARY KEY Constraints:

  

将PRIMARY KEY约束添加到现有列或   在表中的列中,数据库引擎检查现有列   数据和元数据,以确保主要的以下规则   键:

     
      
  • 列不允许空值。
  •   
  • 没有重复的值
  •   
     

如果将一个PRIMARY KEY约束添加到a   具有重复值或允许空值的列,   数据库引擎返回错误,但不添加约束。

如果ID列是增量式的,那么可能的解决方法是添加唯一过滤索引

CREATE UNIQUE INDEX AK_MyUniqueIndex ON dbo.MyTable (ID)
WHERE ID > ... max value of existing ID here

这样,唯一性将仅应用于新添加的记录。