sql删除行错误

时间:2015-12-17 21:12:01

标签: sql-server ssms

我正在尝试删除sql server management studio 2012中的一行,但会出现错误:

sql error

  

没有删除任何行

     

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

有没有办法在不输入任何查询的情况下修复错误?

4 个答案:

答案 0 :(得分:4)

您的桌子上没有主要的,唯一的密钥。

SQL Server无法删除您的行,因为没有区别于其他行。

解决方案是为表添加唯一的主键。无论如何不建议不要。一个简单的integer autoincrement应该透明地为您服务。

答案 1 :(得分:3)

谢谢@Hani

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

  1. 我使用GUI界面在表格中“编辑前200行”。
  2. 然后我在SQL Criteria窗格中添加了一个过滤器,它只显示了我的两个重复行。 (这是因为我无法删除其中一行)。
  3. 受到您的评论的启发,我打开了SQL窗格并更改了:
  4. SELECT TOP(200)... {剪断过滤器创建的条件}

    改为:

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

    1. 然后我能够“执行SQL”调整后的SQL。
    2. 然后我可以使用界面删除显示的单行(这次没有警告)。
    3. 使用200行重新运行SQL Criteria,确认只有一行已成功删除,另一行仍然存在。
    4. 感谢您的帮助,这被证明是GUI和SQL代码的完美结合,让我能够安全有效地完成工作。

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:0)

我还发现,如果您在ntextjson.loads列中遇到错误,则会发现。我将该列转换为NVARCHAR(MAX),此后没有任何问题。