【SQL Server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 问题解决

【SQL Server】“已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行” 问题

问题阐述

在手动对表进行删除或修改操作时,可能会出现如下情况:

image-20200412172819108

表结构及数据:

image-20200412172944088

原因分析

已更新或删除的行值要么不能使该行成为唯一行,可以看到表中存在了重复的数据。

解决方法一:添加标识列,使元组成为唯一值

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 重复列的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值