在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)
但通过编辑器更新时出错
我读了一些他们说过的帖子
如果满足以下条件,则会出现此问题:
该表包含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?
答案 0 :(得分:1)
根据我的经验,它不需要主键,但该行必须在至少1个字段中是唯一的。该编辑器一次将更改限制为1行。如果它无法区分1行和下一行,则失败。
查询编辑器没有此限制,因此会更新符合WHERE
条件的所有行。