【SQL Server】“已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行” 问题
问题阐述
在手动对表进行删除或修改操作时,可能会出现如下情况:
表结构及数据:
原因分析
已更新或删除的行值要么不能使该行成为唯一行,可以看到表中存在了重复的数据。
解决方法一:添加标识列,使元组成为唯一值
SQL语句:
alter table 表名
add 标识列名 int identity(1,1) primary key
使用上述语句之后,每一个元组都会多一个标识元素,用于区分每一行。
补充:identity关键字的使用。
identity(a,b),a是标识种子,b为标识增量。意思就是a为起始值,然后每间隔长度b取一个值作为标识值。
解决方法二:将原表选择出不重复的数据存入备份表中,然后将原表删除,之后再将备份表拷入原表中
1)将不重复数据导入备份表
insert into 备份表
select 列名1,列名2... from 原表
2)清除原表数据
delete from 原表
3)将备份表导入原表
insert into 原表
select 列名1,列名2... from 备份表
解决方法三:删除表中重复数据,然后重新添加
delete from 表名 where 重复列的信息