视图用到的表更新表结构时注意刷新视图

工作中,用到视图 如: 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 AS
DECLARE 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 

posted @ 2019-03-28 09:30  dgdyq  阅读(343)  评论(1编辑  收藏  举报