关闭

SQL Server基础知识之:设计和实现视图

发表于:2009-10-30 10:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  我之前有一篇文章讲述这个语法 http://www.cnblogs.com/chenxizhang/archive/2009/05/19/1460040.html

  不能为视图定义全文索引定义。

  不能创建临时视图,也不能对临时表创建视图。

  在SQL Server 2005中,可以通过CTE(Common Table Expression)来实现该功能

  之前的版本,大致的做法是使用临时表,表变量,函数等等

  不能删除参与到使用 SCHEMABINDING 子句创建的视图中的视图、表或函数,除非该视图已被删除或更改而不再具有架构绑定。另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响该视图的定义,则这些语句将会失败。

  如果未使用 SCHEMABINDING 子句创建视图,则对视图下影响视图定义的对象进行更改时,应运行 sp_refreshview。 否则,当查询视图时,可能会生成意外结果。

  如果你修改了一个表,那么如何刷新所有与该表有关的视图呢

  http://msdn.microsoft.com/zh-cn/library/ms187821(SQL.90).ASPx

  强烈建议对某些非常重要的视图,添加SCHEMABINDING 子句。

  尽管查询引用一个已配置全文索引的表时,视图定义可以包含全文查询,仍然不能对视图执行全文查询。

  下列情况下必须指定视图中每列的名称:

  视图中的任何列都是从算术表达式、内置函数或常量派生而来。

  视图中有两列或多列原应具有相同名称(通常由于视图定义包含联接,因此来自两个或多个不同表的列具有相同的名称)。

  希望为视图中的列指定一个与其源列不同的名称。 (也可以在视图中重命名列。)无论重命名与否,视图列都会继承其源列的数据类型。

  若要创建视图,您必须获取由数据库所有者授予的此操作执行权限,如果使用 SCHEMABINDING 子句创建视图,则必须对视图定义中引用的任何表或视图具有相应的权限。

  默认情况下,由于行通过视图进行添加或更新,当其不再符合定义视图的查询的条件时,它们即从视图范围中消失。例如,创建一个定义视图的查询,该视图从表中检索员工的薪水低于 $30,000 的所有行。如果员工的薪水涨到 $32,000,因其薪水不符合视图所设条件,查询时视图不再显示该特定员工。 但是,WITH CHECK OPTION 子句强制所有数据修改语句均根据视图执行,以符合定义视图的 SELECT 语句中所设条件。 如果使用该子句,则对行的修改不能导致行从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号