通过Sql Data EDITOR更新时的原因是否需要拥有表的主键?

时间:2014-03-25 17:02:32

标签: sql-server ssms

在SQL Server Management Studio中通过编辑器进行更新时,原因是什么。是否需要拥有表的主键?

简单表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

我读了一些他们说过的帖子

如果满足以下条件,则会出现此问题:

  • 该表包含text或ntext数据的一列或多列 类型。

  • 其中一列的值包含以下字符:     百分号(%)     下划线(_)     左括号([)

  • 该表格不包含主键。

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

1 个答案:

答案 0 :(得分:1)

根据我的经验,它不需要主键,但该行必须在至少1个字段中是唯一的。该编辑器一次将更改限制为1行。如果它无法区分1行和下一行,则失败。

查询编辑器没有此限制,因此会更新符合WHERE条件的所有行。