zoukankan      html  css  js  c++  java
  • 5.3刷新视图

    在创建视图时,sql server会保存元数据信息,用于描述视图、列、安全、依赖等信息;基础对象中的架构更改不影响视图的元数据;更改架构后使用sp_refreshview存储过程刷新视图是一个好习惯,这样对架构的更改就会反映在视图中。

    为了掩饰架构改变后,不刷新视图元数据会发生什么情况,运行下面的代码创建表T1和视图V1

    use tempdb;
    go
    if OBJECT_ID ('dbo.v1') is not null
        drop view dbo.v1;
    if OBJECT_ID('dbo.T1') is not null
        drop table dbo.T1;
    
    create Table T1(col1 int ,col2 int);
    insert into T1(col1,col2) values(1,2);
    
    go
    create view V1
    as 
    select * from T1;

    第一次创建V1时,sql server保存关于列的元数据信息,此时的列为Col1和Col2,如果你查询该视图,你将得到如下结果,即它包含两个列

    image

    接下来,我们给基础表T1增加一列Col3

    alter table dbo.T1 add col3 int;

    T1的架构更改并没有反应到视图的元数据中。视图中还是包含两列,如果你再次查询视图,依然得到上图所示的结果。

    要刷新视图的元数据,对V1运行sp_refreshview存储过程

    exec sp_refreshview 'dbo.V1';

    再次执行查询

    select * from dbo.V1;

    将得到如下结果

    image

    更改数据库的架构后,刷新所有视图的元数据信息是个好习惯

    为避免编写sp_refreshview语句的繁琐过程,可以使用如下语句:

    select N'Exec sp_refreshview '+QUOTENAME(ViewName,'''')+';' as cmd
    from
    (select QUOTENAME(TABLE_SCHEMA)+N','+QUOTENAME(TABLE_NAME) as ViewName from INFORMATION_SCHEMA.VIEWS) as V
    where OBJECTPROPERTY(OBJECT_ID(ViewName),'IsSchemaBound')=0
  • 相关阅读:
    web.config中httpRedirect
    时间复杂度O(n)与空间复杂度O(1)
    NserviceBus过期处理
    struts的生命周期
    myeclipse 更改字体
    研磨struts2地址
    jQuery 实现公告无缝滚动
    统计网站访问图形数据链接
    工作经常使用的SQL整理
    使IE6下PNG背景透明的七种方法
  • 原文地址:https://www.cnblogs.com/xqlcrystal/p/5396308.html
Copyright © 2011-2022 走看看