2015-12-17 70 views
2

我想在sql server management studio 2012刪除行,但會出現一個錯誤行錯誤:SQL中刪除

sql error

沒有行被刪除

的問題時,出現了刪除第2行錯誤源: Microsoft.SqlServer.Management.DataTools錯誤消息:更新或刪除的行 要麼不使行是唯一的,要麼改變多行(2行)

有沒有辦法解決錯誤,沒有輸入任何查詢?

+1

我從來沒有很多運氣使用SS MS GUI。我建議在查詢窗口編輯器中只使用T-SQL。總是爲我工作得更好。 –

+1

遵循指南http://allenbuckley.com/blog/the-row-values-updated-or-deleted-either-do-not-make-the-row-unique-or-they-alter-multiple-rows/只是你沒有主鍵和重複數據。 –

回答

3

您的表格中沒有主鍵唯一鍵。

SQL Server無法刪除您的行,因爲沒有任何區別它與其他行。

解決方案是爲您的表添加一個唯一的主鍵。不建議不要。一個簡單的integerautoincrement應該爲你透明地工作。

1

如果您試圖刪除表中沒有唯一標識符的重複行之一,可以嘗試類似的方法。

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

在應用刪除查詢之前,您應該先用SELECT語句對其進行測試。

0

感謝@Hani

我有同樣的問題(實際上是一個唯一的ID表,但也有一些行小心重複包括「唯一ID」,所以我無法刪除重複的行),你的建議幫助我從SQL Server Management GUI解決它。

  1. 我使用GUI界面來編輯表格中的「前200行」。
  2. 然後,我在SQL Criteria窗格中添加了一個過濾器,它引發了我的兩個重複行。 (這是我無法刪除其中的一行)。
  3. 通過您的評論的啓發,我打開SQL窗格中,改變了:

SELECT TOP(200)... {剪斷通過過濾器創建我的標準}

,而不是閱讀:

SELECT TOP(1)... {SNIP我的標準創建通過過濾器}

  1. 我當時能夠「執行SQL」的調整SQL。
  2. 我當時可以使用界面來刪除顯示的單行(這次沒有警告)。
  3. 用200行重新運行SQL條件確認只有一行已被成功刪除,剩下一行。

感謝您的幫助,這被證明是GUI和SQL代碼的完美結合,使我能夠安全高效地完成工作。

我希望這可以幫助其他人在類似的情況。