知识大全 可更新的视图(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并不是要求所有的可更新视图都需要带触发器 只要要求更新的字段属于同一张数据表(简称更新表而且其它表与更新表是正常的关联关系则
SQL实战新手入门:创建视图(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建视图()
基于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左视图反映物体的上下和前后
脚本可分两部分: 同义词 :synonymcmd: sqlplusdxsq/teledoone@jnnew@synonymsql synonymsql: create