我正在尝试删除sql server management studio 2012
中的一行,但会出现错误:
没有删除任何行
尝试删除第2行时出现问题错误来源: Microsoft.SqlServer.Management.DataTools错误消息:行 更新或删除的值不会使行唯一或它们 改变多行(2行)
有没有办法在不输入任何查询的情况下修复错误?
答案 0 :(得分:4)
您的桌子上没有主要的,唯一的密钥。
SQL Server无法删除您的行,因为没有区别于其他行。
解决方案是为表添加唯一的主键。无论如何不建议不要。一个简单的integer
autoincrement
应该透明地为您服务。
答案 1 :(得分:3)
谢谢@Hani
我遇到了同样的问题(实际上是一个带有唯一ID的表,但是有些行意外重复,包括“唯一ID”,所以我无法删除重复的行),你的建议帮助我从SQL中解决了它服务器管理GUI。
SELECT TOP(200)...
{剪断过滤器创建的条件}
改为:
SELECT TOP(1)...
{剪断过滤器创建的条件}
感谢您的帮助,这被证明是GUI和SQL代码的完美结合,让我能够安全有效地完成工作。
我希望这可以帮助处于类似情况的其他人。
答案 2 :(得分:2)
如果您尝试删除没有唯一标识符的表中的一个重复行,您可以尝试类似的内容。
DELETE TOP(1) FROM theTable WHERE condition1, condition2,...
在应用删除查询之前,应首先使用SELECT语句对其进行测试。
答案 3 :(得分:0)
我还发现,如果您在ntext
或json.loads
列中遇到错误,则会发现。我将该列转换为NVARCHAR(MAX),此后没有任何问题。