原始需求以下:spa
有一個表T1code
create table t1 (id int not null primary key ,v1 varchar(10) ) insert into t1 values(1,'aaa'); insert into t1 values(2,'bbb');
有一個表TS,用於記錄T1中 每條記錄的更新時間(觸發器實現,此處略過)blog
create table ts (id int not null primary key ,updatetime datetime )
insert into ts values(1,getdate());
insert into ts values(2,getdate());
建立兩個視圖:get
--視圖1
create view view1 as select a.*,b.updatetime from t1 a left join ts b on a.id=b.id
--視圖2 create view view2 as select b.updatetime,a.* from t1 a left join ts b on a.id=b.id
這樣作是但願記錄表t1更新的時間戳,同時當t1新增字段時視圖會包含新的字段。至關於 視圖 = t1.*+ts.updateimetable
alter table t1 add v2 int not null default -1;
查看一下視圖:class
select * from view1; select * from view2;
結果以下:date
兩個 視圖中均沒有新增的字段v2.select
這個問題暫時用刷新視圖的方法處理,是否有其它方式暫未找到。方法
sp_refreshview view1
仔細看上圖中的第1個結果,updatetime並非顯示它的值getdate(),而是顯示的view1中新增的字段v2的值。im
而view2中不會有這個問題