sql删除行错误

问题描述 投票:0回答:5

我试图删除

sql server management studio 2012
中的一行,但出现错误:

sql错误

没有删除任何行

尝试删除第 2 行时出现问题错误源: Microsoft.SqlServer.Management.DataTools 错误消息:行 更新或删除的值不会使该行唯一,或者它们 更改多行(2行)

有没有一种方法可以在不输入任何查询的情况下修复错误?

sql-server ssms
5个回答
7
投票

谢谢@Hani

我遇到了同样的问题(实际上是一个带有唯一ID的表,但有些行意外重复,包括“唯一ID”,所以我无法删除重复的行),你的建议帮助我从SQL Server管理中解决了这个问题图形用户界面。

  1. 我使用 GUI 界面“编辑表中的前 200 行”。
  2. 然后,我在 SQL Criteria 窗格中添加了一个过滤器,该过滤器只显示了我的两个重复行。 (这是我无法从中删除其中一行的情况)。
  3. 受到您评论的启发,我打开了 SQL 窗格并更改了:

SELECT TOP(200)...
{剪切我由过滤器创建的条件}

改为阅读:

SELECT TOP(1)...
{剪切我由过滤器创建的条件}

  1. 然后我就能够“执行 SQL”调整后的 SQL。
  2. 然后我可以使用该界面删除显示的单行(这次没有警告)。
  3. 重新运行包含 200 行的 SQL Criteria,确认只有一行已成功删除,还剩下一行。

感谢您的帮助,这被证明是 GUI 和 SQL 代码的完美结合,让我能够安全高效地完成工作。

我希望这可以帮助处于类似情况的其他人。


6
投票

您的表中没有主唯一键。

SQL Server 无法删除您的行,因为没有任何东西可以将其与其他行区分开来。

解决方案是向表中添加唯一的主键。无论如何,不建议没有。一个简单的

integer
autoincrement
应该对您来说是透明的。


4
投票

如果您尝试删除表中没有唯一标识符的重复行之一,您可以尝试类似的操作。

DELETE TOP(1) FROM theTable WHERE condition1, condition2,...

在应用删除查询之前,您应该首先使用 SELECT 语句对其进行测试。


2
投票

我还发现,如果您使用

text
ntext
列,您会收到他的错误。 我将该列转换为 NVARCHAR(MAX),此后没有出现任何问题。


0
投票

机器人已删除违规行为,并且该违规行为已从帐户中删除。请删除错误。错误号 id:740119 并@纠正删除页面错误 610 上的路径

© www.soinside.com 2019 - 2024. All rights reserved.