【sql server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 解决方案

#事故现场:

1、在手动修改某表中数据是,出现如下错误提示:

 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行

2、表结构及数据:

#解决方法:

1、原因分析:提示被删除的行不是唯一行,检查发现:

  表中出现了重复的数据({name:小红,age:10}),所以当视图删除时,会提示错误;

2、解决方法一:添加中间,使行值成为唯一值;

  sql语句:

ALTER TABLE UserInfo
add ID int identity primary key 

  效果:

3、解决方法二:先将原用的表做个备份,根据条件将满足条件的数据导到新的表来,再将原表清除,最后将备份表中的数据select过来即可;

  1)、在备份表中导入需要的数据

INSERT INTO UserInfo_backup
select distinct name,age from UserInfo

  2)、清除原表中的数据;

delete from  UserInfo

  3)、从备份表中导入数据;

INSERT INTO UserInfo
select name,age from UserInfo_backup

4、解决方法三:直接删除出现重复的数据;(具体看情况而定)

delete from  UserInfo where name=‘小红‘ and age=10

——————————————————————————————————————————————————————

原文地址:https://www.cnblogs.com/willingtolove/p/10798210.html

时间: 2024-10-15 04:06:29

【sql server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 解决方案的相关文章

SQL2005:已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行.

原文发布时间为:2008-08-04 -- 来源于本人的百度文章 [由搬家工具导入] 最近使用sql server2005,已经不止一次的发生了这样的错误.具体是怎么出来的我不清楚,其表现为:数据库中出现了重复的键值或数据,当试图删除时,提示错误.错误信息如标题.这样的问题以前都是不管,可是前天要将本地数据库中的部分数据导入到服务器上,又出现了这样的错误.这次的表现为键值重复.因此导入数据总是失败.试图从数据库管理器中删除也不行,无奈了,只好试验一下查询分析器删除....成功了 *^_^*所以,

已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行

在对一个表做试验的时候,往里面添加了几条数据,后来发现原本想作为主键的字段的值都为"NULL",这可不行,删除重新来吧.选中删除的时候就出现了 "已更改或删除的行值要么不能使改行成为唯一行,要么改变了多个行(X行)"的错误. 原来是建表的时候忘了添加主键,但是现在删除也删除不了,往里面填东西吧,也填不了,也报错.没有办法啊~百度吧~各种解决办法,终于找到了我这个菜鸟能看懂而且操作出来的方法.(好方法!!!) 解决方法: 单击SQL工具栏上的"新建查询&qu

SQL Server-已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行

在更新没有设置主键的表的时候出现下图中的问题: 问题原因: 这种问题大多是由于没有主键(PK)导致同一张表中存在若干条相同的数据 DBMS存储时,只为其存储一条数据,因为DBMS底层做了优化,以减少数据冗余.所以删除或更新一条重复数据就牵一发而动全身 解决方法: 推荐设置主键,检查是否存在相同行数据

SQL Server触发器创建、删除、修改、查看示例步骤

SQL Server触发器创建.删除.修改.查看示例步骤 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表.这两个表. 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束.    

SQL Server 记录(更新中...)

sys.databases 显示所有数据库信息 sys.tables 显示当前数据库所有的表的信息 Go 向 SQL Server 实用工具发出一批 Transact-SQL 语句已结束的信号,Go本身不是T-SQL语句 sq_addrole 等等 SQL Server 系统存储过程以字符 sp_ 开头. EXEC或EXECUTE 执行 Transact-SQL 批处理中的命令字符串.字符串或执行下列模块之一:系统存储过程.用户定义存储过程.CLR 存储过程.标量值用户定义函数或扩展存储过程.

【转】SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误 最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS下运行的时候,IIS crash.之前的连接是没问题的,后网上找了资料,根据牛人所说的方案解决了. 1. Exception message 已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确.)

在与 SQL Serve2008r 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) j解决方案

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 今早开机发现,打开SQL Server 2008 的 SQL Server Management Studio,输入sa的密码发现,无法登陆数据库?提示以下错误: “在与 SQL Server 建立连接时出现与网络相关

SQL Server 已提交读快照 测试

原文:SQL Server 已提交读快照 测试 1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN UPDATE Test SET C2 = '200' WHERE C1 = 'A' -- COMMIT c) 查询数据(查询没有被阻塞,C2 = '100') SELECT * FROM Test d) 开启事务2,更新数据C2 = '300'(未提交),更新操作被阻

MySQL数据库基础(六)——SQL插入、更新、删除操作

MySQL数据库基础(六)--SQL插入.更新.删除操作 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值. INSERT INTO table_name (column_list) VALUES (value_list); insert into `TSubject` (subjectID,subjectName,BookName,Publisher) values ('0004','英语','大学英语走遍美国','清华出版社')