带着这个问题让我们去了解一下何谓视图?在Sql Server的帮助文档中是这样描述视图的定义如下视图是一个虚拟表其内容由查询定义同真实的表一样视图包含一系列带有名称的列和行数据但是视图并不在数据库中以存储的数据值集形式存在行和列数据来自由定义视图的查询所引用的表并且在引用视图时动态生成通过这个定义我们可以看出视图是一个虚拟的表它仅仅包括视图的定义脚本查询的内容则是动态的生成当我们创建了一个视图以后视图的脚本会保存到当前数据库的系统表syscomments里我们可以通过系统提供的存储过程sp_helptext查询得到视图的定义脚本从定义上看好像并不能得到我们想要的答案那么我们就先不管Sql Server是如何实现视图的我们先来解决一下当前的问题(我上面提到的)可能有些朋友已经知道了解决问题的办法了那就是把vCustomersB的定义脚本重新执行一下(其实只需要把create换成alter执行一下就可以)脚本如下
重新执行一下vCustomersB的定义脚本
alter view vCustomersB
as
select * from vCustomersA
go
那么除了这个方法以外其实SqlServer也提供了一个扩展存储过程sp_refreshview来帮我们做这件事情调用的脚本如下
刷新指定视图的元数据
exec sp_refreshview vCustomersB
我个人目前就知道这两个办法不知道你还有没有其他的办法有的话可以一起分享一下
[] [] [] [] []