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,如果你查询该视图,你将得到如下结果,即它包含两个列

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

alter table dbo.T1 add col3 int;

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

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

exec sp_refreshview ‘dbo.V1‘;

再次执行查询

select * from dbo.V1;

将得到如下结果

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

为避免编写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
时间: 2024-08-04 20:20:29

5.3刷新视图的相关文章

IOS如何刷新视图上的显示内容

大家都知道,UItableView 有个 reloadData的方法,可以tableview刷新视图.而普通的View上面.我们如何刷新视图的呢? 下图是我做的一个用户登录之后显示用户昵称和个性签名还有头像的界面.当用户登录之后跳转到这个页面,然后显示用户的简单信息.点击退出登录后信息也随之消失. 我的方法是,在视图将要出现的时候“-(void)viewWillAppear:(BOOL)animated” 再调用  “ [self.view addSubview:headimg];”这个方法.然

(MSSQL)sp_refreshview刷新视图失败及更新Table字段失败的问题解决

在近期工作中遇到一个任务,需要批量更改散布在很多Table中的某字段,同时刷新相关视图,但是在执行脚本时,发现了如下问题 更新字段问题 消息 5074,级别 16,状态 1,第 1 行 对象'View_RosterStudent' 依赖于 列'sName'. 消息 4922,级别 16,状态 9,第 1 行 由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN sName 失败. 刷新视图问题 消息 15165,级别 16,状态 1,过程 sp_refreshsqlmod

你是否也忘了刷新视图?

原文:你是否也忘了刷新视图? 起因: 由于工作原因,我隔几天就要执行一批开发人员提供过来的脚本,部分是新需求的开发,部分是修复bug.往往包含有几百个.我用工具批量执行之后,系统继续运行,后来反反复复会有这样那样的错误,其中一个,经过开发人员的检查,是因为视图没刷新. 对此我纳闷了很久,视图不就是一堆select语句吗?怎么还要刷新?难道表改了不会跟着改?为此,我首先自己做一个实验,发现的确不会马上改过来,至于啥时候才更改,也不清楚,听说从2000的时候,这个问题已经存在,看来我孤陋寡闻了. 测

iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用

动态风火轮视图控件:UIActivityIndicatorView 介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView. 类型: typedef NS_ENUM(NSInteger, UIActivityIndicatorViewStyle) { UIActivityIndicatorViewStyleWhiteLarge,  //大的白色类型 UIActivityIndicatorViewStyleWhite,         //白色类型 UIAc

Oracle查询库中已有存储过程、创建定时刷新视图、角色权限传递、创建序列触发器

SELECT * FROM V$ACCESS O WHERE O.TYPE LIKE 'PROCEDURE%' 创建物化视图且定时刷新create materialized view mv_name refresh force on demand start with sysdate next sysdate + 1create materialized view mv_name refresh force on demand start with sysdate next to_date( c

Vue,数据更新不能刷新视图

//参一当前要更新的数据对象 //参二要改变的数组元素的下标,//参三:新数据(要更新到视图中的新数据) Vue.set(this.todos, inde, arr[inde]);

定时刷新视图,写的一个小小的程序,一年前

// //  ViewController.m //  手机网易2 // //  Created by BreazeMago on 15/1/7. //  Copyright (c) 2015年 BreazeMago. All rights reserved. // #import "rootViewController.h" @interface rootViewController ()<UITableViewDataSource,UITableViewDelegate,UI

自定义控件(视图)28期笔记07:自定义控件之使用系统控件(自定义属性之开关按钮案例的优化)

1.先前,我们编好的开关按钮的项目工程,如下: 2. 下面我们要使用自定义的属性优化这个开关按钮,如下: (1)第1步,我们在res/values文件夹下,新建一个attrs.xml文件,如下: 其中attrs.xml,如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <!-- 声明一个属性集的名称 --> 4 <declare-styleable na

SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)

前言 上一节我们简单讲述了表表达式的4种类型,这一系列我们来讲讲使用视图的限制,简短的内容,深入的理解,Always to review the basics. 避免在视图中使用ORDER BY 上一节我们也讲述了使用表表达式必须满足的3个要求,其中就有一个无法保证顺序,也就是说的ORDER BY的问题,我们还是重点看看在视图中的限制.在常规查询中对于排序我们是这样做的. USE AdventureWorks2012 GO SELECT * FROM Sales.SalesOrderDetail