sql 删除行错误
sql delete row error
我正在尝试删除 sql server management studio 2012
中的一行,但出现错误:
No rows were deleted
A problem occurred attempting to delete row 2 Error Source:
Microsoft.SqlServer.Management.DataTools Error Message: The row
value(s) updated or deleted either do not make the row unique or they
alter multiple rows(2 rows)
有没有办法在不输入任何查询的情况下修复错误?
您的 table 中没有唯一主键。
SQL 服务器无法删除您的行,因为没有任何东西可以将它与其他行区分开来。
解决方案是为您的 table 添加一个唯一的主键。反正不建议有none。一个简单的 integer
和 autoincrement
应该对你透明地工作。
如果您尝试删除 table 中没有唯一标识符的重复行之一,您可以尝试类似的操作。
DELETE TOP(1) FROM theTable WHERE condition1, condition2,...
在应用删除查询之前,您应该先使用 SELECT 语句对其进行测试。
感谢@Hani
我遇到了同样的问题(实际上 table 具有唯一 ID,但有些行不小心重复了,包括 "unique ID" 所以我无法删除重复的行),你的建议帮助我从 SQL 服务器管理 GUI 解决了它。
- 我在 table 中使用了 "edit top 200 rows" 的 GUI 界面。
- 然后我在 SQL 条件窗格中添加了一个过滤器,它只显示了我的两个重复行。 (这是我无法从中删除其中一行的情况)。
- 受您评论的启发,我打开了 SQL 窗格并更改了:
SELECT TOP(200)...
{删掉我通过过滤器创建的条件}
改为阅读:
SELECT TOP(1)...
{删掉我通过过滤器创建的条件}
- 然后我能够 "Execute SQL" 调整后的 SQL。
- 然后我可以使用界面删除显示的单行(这次没有警告)。
- 重新运行 SQL 200 行的条件确认只有一行已成功删除,剩下一行。
感谢您的帮助,事实证明这是 GUI 和 SQL 代码的完美结合,让我能够安全高效地完成工作。
我希望这对处于类似情况的其他人有所帮助。
我还发现,如果您使用 text
或 ntext
列,您将得到他的错误。我将该列转换为 NVARCHAR(MAX),此后没有遇到任何问题。
我正在尝试删除 sql server management studio 2012
中的一行,但出现错误:
No rows were deleted
A problem occurred attempting to delete row 2 Error Source: Microsoft.SqlServer.Management.DataTools Error Message: The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows)
有没有办法在不输入任何查询的情况下修复错误?
您的 table 中没有唯一主键。
SQL 服务器无法删除您的行,因为没有任何东西可以将它与其他行区分开来。
解决方案是为您的 table 添加一个唯一的主键。反正不建议有none。一个简单的 integer
和 autoincrement
应该对你透明地工作。
如果您尝试删除 table 中没有唯一标识符的重复行之一,您可以尝试类似的操作。
DELETE TOP(1) FROM theTable WHERE condition1, condition2,...
在应用删除查询之前,您应该先使用 SELECT 语句对其进行测试。
感谢@Hani
我遇到了同样的问题(实际上 table 具有唯一 ID,但有些行不小心重复了,包括 "unique ID" 所以我无法删除重复的行),你的建议帮助我从 SQL 服务器管理 GUI 解决了它。
- 我在 table 中使用了 "edit top 200 rows" 的 GUI 界面。
- 然后我在 SQL 条件窗格中添加了一个过滤器,它只显示了我的两个重复行。 (这是我无法从中删除其中一行的情况)。
- 受您评论的启发,我打开了 SQL 窗格并更改了:
SELECT TOP(200)...
{删掉我通过过滤器创建的条件}
改为阅读:
SELECT TOP(1)...
{删掉我通过过滤器创建的条件}
- 然后我能够 "Execute SQL" 调整后的 SQL。
- 然后我可以使用界面删除显示的单行(这次没有警告)。
- 重新运行 SQL 200 行的条件确认只有一行已成功删除,剩下一行。
感谢您的帮助,事实证明这是 GUI 和 SQL 代码的完美结合,让我能够安全高效地完成工作。
我希望这对处于类似情况的其他人有所帮助。
我还发现,如果您使用 text
或 ntext
列,您将得到他的错误。我将该列转换为 NVARCHAR(MAX),此后没有遇到任何问题。