我在sql server中有一个表有重复的ID,但我无法删除那些重复的记录。现在要求是在该列上创建具有重复数据的主键。有没有办法在不更改数据的情况下创建主键。
答案 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
这样,唯一性将仅应用于新添加的记录。