mssql sqlserver 视图操作注意事项


摘要:
下文讲述sqlserver 视图的相关知识和注意事项,如下所示:
实验环境:sql server 2008 R2


在sqlserver 中,当一个视图被定义后,我们可以像对待表查询一样对待视图查询。
但当我们对视图执行更新或删除操作,将受到相应的限制,如下所示:

1. 当视图由多表联接组合而成,当我们对视图执行更新和删除操作时,只可更新其中一张表;
2.当视图中存在group by 或聚合操作时,不能对视图执行更新和删除操作;
3.由于视图中可能不包含表所有字段,当我们对视图执行插入操作,可能出现null值;

   create  view vw_test   
    as        
     select  a.keyId,b.name as b,c.name as c, c.name as d     
     from  tableA as a,tableB as b,tableC   as c        
       WHERE a.keyId = b.keyId 
          and b.keyId=c.keyId 
    go 
 ---视图vw_test由三张表联接组成,当我们对视图进行insert操作
   insert into vw_test  values(1,'a','b','c','d')
   ---视图会提示相关错误信:"视图vw_test不可更新,因为修改涉及多个基表"
    create  view vw_test   
    as        
     select  a.keyId,count(a.name) as cnt      
      from  tableA as a 
      group by a.keyId 
     go
   ---由于视图中使用聚合操作,所以此视图不能进行增删改操作。