知识大全 可更新的视图(2)

Posted 视图

篇首语:守株待兔只能得一餐饱,主动出击方能丰衣足食。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 可更新的视图(2)相关的知识,希望对你有一定的参考价值。

SQL实战新手入门:可更新的视图(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   可更新的视图( )

  示例说明

  在BOOKS表中 除了BK_ID列被定义为主键列之外 其他所有列都允许NULL值 上面例子中创建的vwBookPrices视图是基于单个表的(BOOKS表) 它允许更新BK_TITLE列和BK_PRICE列 并允许插入新记录 该视图还支持删除记录 实际上 如果不是由于参照完整性的限制 不允许在最子层表中出现 孤立 记录 我们将可以通过视图删除BOOKS表中的所有记录

  WITH CHECK OPTION

  通过视图添加 修改和删除数据的功能也带来了新的问题 对于通过视图插入的数据与通过视图显示出来的数据 如何才能确保两者之间的一致性呢?

  假设在前面的练习中 当创建视图时添加了一个约束条件 将视图限制为只显示BK_ID小于或等于 的图书

  CREATE VIEW vwBookPricesFirst

  AS SELECT

  bk_id

   bk_title

   bk_price

  FROM books

  WHERE bk_id <=

  尽管如此 只需要采用与上面的练习中非常类似的步骤就可以通过视图插入新记录 例如插入一条BK_ID= 的新记录 没有任何东西阻止这种插入操作 这时通过视图查看记录的结果就会不同 因为该视图定义了只显示BK_ID <= 的记录

  除非读者故意要实现这样的功能 否则很可能希望看到通过视图插入到表中的数据 或者首先阻止无效的数据通过视图插入到表中 要实现这样的功能 请使用CHECK OPTION

  只需要将WITH CHECK OPTION添加到视图的定义中 当想插入视图无法显示的数据时 该语句将抛出一个异常 下面是Microsoft SQL Server对此作出的反应

  CREATE VIEW vwBookPricesFirst

  AS SELECT

  bk_id

   bk_title

   bk_price

  FROM books

  WHERE bk_id <=

  WITH CHECK OPTION;

  INSERT INTO vwBookPricesFirst (bk_id) VALUES ( )

  Msg Level State Line

  The attempted insert or update failed because the target view either

  specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION

  and one or more rows resulting from the operation did not qualify under

  the CHECK OPTION constraint

  The statement has been terminated

  请注意 这对于直接更新BOOKS表中的数据并没有任何影响 它只是对视图施加了限制 因为该视图无法显示BK_ID大于 的记录

  在入口处检查数据将带来严重的性能损失 因此应该谨慎使用

  CHECK OPTION是SQL标准的一部分 所有具有可更新视图功能的RDBMS都支持使用它 包括Oracle MySQL Microsoft SQL Server和IBM DB

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

cha138/Article/program/SQL/201311/16458

相关参考

知识大全 查看视图中哪里字段是允许更新的直接方法

  前言  之前曾经编写过一篇关于多表可更新视图的文章而事实上ORACLE并不是要求所有的可更新视图都需要带触发器  只要要求更新的字段属于同一张数据表(简称更新表而且其它表与更新表是正常的关联关系则

知识大全 创建视图(2)

SQL实战新手入门:创建视图(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建视图() 

知识大全 透视图开发[2]

基于Eclipse的工具开发:透视图开发[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 SQL Server 2000的视图中必须小心使用*符号[2]

SQLServer2000的视图中必须小心使用*符号[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC实现我们自己的视图引擎[2]

ASP.NETMVC实现我们自己的视图引擎[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

三视图的三等关系有哪些?

  1主,左视图高平齐2主,俯视图长对正3俯,左视图宽相等。

三视图的三等关系有哪些?

  1主,左视图高平齐2主,俯视图长对正3俯,左视图宽相等。

视图与物体的方位关系是什么?

  1主视图反映物体的上下和左右,2俯视图反映物体的左右和前后,3左视图反映物体的上下和前后

视图与物体的方位关系是什么?

  1主视图反映物体的上下和左右,2俯视图反映物体的左右和前后,3左视图反映物体的上下和前后

知识大全 导出oracle数据库对象--同义词,系列,视图

  脚本可分两部分:    同义词    :synonymcmd:    sqlplusdxsq/teledoone@jnnew@synonymsql    synonymsql:    create