⓵如何删除SQLServer表中的重复行MicrosoftSQLServer表不得包含重复行和非唯一主键。
为了简洁起见,在本文中,我们有时将主键称为“key”或“PK”,但这始终意味着“主键”。
重复PK违反了经济实体的完整性,在关系系统中是不允许的。
SQLServer有多种机制来强制实体完整性,包括索引、唯一约束、主键约束和触发器。
但是,在某些情况下可能会出现重复主键,如果出现这种情况,就应该清理重复主键。
出现重复主键的一种情况是SQLServer外部的非关系数据中存在重复的PK,并且导入此数据时不强制执行PK唯一性。
另一种可能出现重复主键的情况是由数据库设计错误引起的,例如没有在每个表上强制执行实体完整性。
重复的PK通常在尝试创建唯一索引时发现,因为如果发现重复的键,则唯一索引的创建将中止并显示以下消息:
Msg1505,Level16,State1Createuniqueindexabortedonduplicatekey。
如果您使用的是SQLServer2000或SQLServer2005,您将收到以下错误消息:
Msg1505,Level16,State1CREATEUNIQUEINDEXterminatedbecauses'and'sound%。
plicatekeyvalue是%ls。
本文讨论如何查找并删除表中的重复主键。
但是,您应该仔细检查出现重复键的进程以避免重复。