ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 视图

视图

原创 Linux操作系统 作者:keeking 时间:2009-07-23 21:22:55 0 删除 编辑

with check option 创建可更新的视图,使数据修改能够通过视图看见。视图可以用作传递口,直接对一个基表进行数据修改。

schemabingding 防止一个表在没有删除依赖与该表的视图之前被删除。

ansi_nulls设置不限制可以通过视图执行修改。

quoted_identifier设置不限制可以通过视图执行的修改。为了创建索引视图,必须把它设置为on

视图的SELECT语句不能做如下事情:

1.使用compute或compute by子句

2.使用into关键字

3.使用option子句

4.引用一个临时表或表变量

5.使用order by,除非它还制定了top运算符(如果指定with check option,就不能用top运算符)

创建一个索引视图所必须的:

1.quoted_identifier on

2.shemabingding

------------------------------------------------------------------------------------------

必须使用   SCHEMABINDING   定义视图才能在视图上创建索引。视图定义也必须具有确定性。如果选择列表中的所有表达式、WHERE   和   GROUP   BY   子句都具有确定性,则视图也具有确定性。而且,所有键列必须是精确的。只有视图的非键列可能包含浮点表达式(使用   float   数据类型的表达式),而且   float   表达式不能在视图定义的其它任何位置使用。  
   
  若要在确定性视图中查找列,请使用   COLUMNPROPERTY   函数(IsDeterministic   属性)。该函数的   IsPrecise   属性可用来确定键列是否精确。  
   
  必须先为视图创建唯一的聚集索引,才能为该视图创建非聚集索引。    
   
  指定   SCHEMABINDING   时,select_statement   必须包含所引用的表、视图或用户定义函数的两部分名称   (owner.object)。  
   
  不能除去参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑定。否则,SQL   Server   会产生错误。另外,如果对参与具有架构绑定的视图的表执行   ALTER   TABLE   语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败  
----------------------------------------------------------------------------------------------------------

定义索引视图的   SELECT   语句不得包含   TOP、DISTINCT、COMPUTE、HAVING   和   UNION   关键字。也不能包含子查询。  
   
  SELECT   列表中不得包含星号   (*)、'table.*'   通配符列表、DISTINCT、COUNT(*)、COUNT()、基表中的计算列和标量聚合。    
   
  非聚合   SELECT   列表中不能包含表达式。聚合   SELECT   列表(包含   GROUP   BY   的查询)中可能包含   SUM   和   COUNT_BIG();它一定包含   COUNT_BIG(*)。不允许有其它聚合函数(MIN、MAX、STDEV,...)。  
   
  使用   AVG   的复杂聚合无法参与索引视图的   SELECT   列表。不过,如果查询使用这样的聚合,则优化程序将能使用该索引视图,用   SUM   和   COUNT_BIG   的简单聚合组合代替   AVG。  
   
  若某列是从取值为   float   数据类型或使用   float   表达式进行取值的表达式得到的,则不能作为索引视图或表中计算列的索引键。这样的列被视为是不精确的。使用   COLUMNPROPERTY   函数决定特定计算列或视图中的列是否精确。  
   
  索引视图受限于以下的附加限制:    
   
  索引的创建者必须拥有表。所有表、视图和索引必须在同一数据库中创建。  
   
  定义索引视图的   SELECT   语句不得包含视图、行集函数、行内函数或派生表。同一物理表在该语句中只能出现一次。  
   
  在任何联接表中,均不允许进行   OUTER   JOIN   操作。  
   
  搜索条件中不允许使用子查询或者   CONTAINS   或   FREETEXT   谓词。  
   
  如果视图定义包含   GROUP   BY   子句,则视图的   SELECT   列表中必须包含所有分组依据列及   COUNT_BIG(*)   表达式。此外,CREATE   UNIQUE   CLUSTERED   INDEX   子句中必须只包含这些列。     
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7899089/viewspace-610103/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 分割函数
下一篇: Select
请登录后发表评论 登录
全部评论

注册时间:2009-07-23

  • 博文量
    194
  • 访问量
    241468