工作中,用到视图 如: select * from A UNION ALL SELECT * FROM B
然后某天 A,B 表结构增加了一个字段
再然后,前端调用竟然不出增加的字段
1. 使用SELECT * 的视图不会自动增加你增加的字段,一样要刷新视图。所以使用Select * 不算是一个好的选择
2. 要重新更新一下视图,否则新添加的Tags字段将不会出现在视图中
3.可以Alter view 视图,也可以 exec sp_refreshview 视图
另外 :在园子里找到下面的博文,在这里做个记录备忘
刷新SqlServer所有视图元数据的存储过程
原文链接:http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html
CREATE PROCEDURE RefreshAllView ASDECLARE MyCursor CURSOR
FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments'))
DECLARE @name varchar(40)
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
begin
exec sp_refreshview @name
end
FETCH NEXT FROM MyCursor INTO @name
END
CLOSE MyCursor
DEALLOCATE MyCursor