2014-03-25 24 views
1

通過SQL Server Management Studio中的編輯器進行更新時,導致此問題的原因是什麼。是否有必要爲表的主鍵?什麼是通過Sql數據更新時的原因編輯器是否有必要有表的主鍵?

簡單的表tab1

模式

Accid(int, not null),Bench1 (varchar(50),null),Bench2(varchar(50),null) 

Accid Bench1  Bench2 
------------------------------- 
    1  null  null 
    1  null  null 
    2  null  null 
    2  null  null 
    3  null  null 
    4  null  null 

update tab1 set Bench1='xx' where accid=1 

工作正常

(2 row(s) affected) 

但同時更新通過編輯給錯誤 enter image description here

我在看了一些帖子,他們SA

  • 表中包含文本或ntext數據 類型的一個或多個列:如果下列條件爲真ID

    出現此問題。

  • 這些列中的一個的值包含以下字符: 百分號(%) 下劃線(_) 左括號([)

  • 表不包含主鍵。

http://support.microsoft.com/kb/925719

所以這裏爲什麼主鍵是強制性的?

if YES 
then how it allows updating through query? 
else if(NO) 
what is reason behind this? 

Schema Screen Shot

+0

你有獨特的鑰匙控制嗎? –

+2

根據我的經驗,它不需要主鍵,但行必須在至少1個字段中唯一。該編輯器一次將更改限制爲1行。如果它不能區分1行和下一行,則失敗。 –

+0

@ roryap沒有。我還包括架構屏幕 –

回答

1

在我的經驗,它並不需要一個主鍵,但該行必須是唯一的在至少1場。該編輯器一次將更改限制爲1行。如果它不能區分1行和下一行,則失敗。

查詢編輯器沒有此限制,因此更新與您的WHERE標準匹配的任何和所有行。

+0

是否sql服務器在編輯器中執行任何操作時在後臺使用(創建和執行)查詢。 –

相關問題