sql 刷新視圖

視圖會保存元數據,列,安全,以及依賴等信息,如果我們把基礎表的架構更改了,并不會直接反映到視圖上來;更改架構后,使用sp_refreshview存儲過程刷新視圖的元數據是一個好習慣;

比如我們創建了一個表T1和一個T1的視圖V1,然后更改T1,再看V1的結果:
首先創建表T1:
代碼如下:
IF OBJECT_ID(‘T1’) IS NOT NULL
DROP TABLE T1
CREATE TABLE T1(col1 INT,col2 INT)
INSERT INTO T1(col1,col2) VALUES(1,2)
GO

然后創建T1的視圖V1:
代碼如下:
CREATE VIEW V1
AS
SELECT * FROM T1

在現實實踐中,要避免在視圖中的SELECT語句中使用*,在這只是演示。如果你查詢視圖V1就會出現以下結果:

接下來,我們對表T1添加一列col3:
代碼如下:
ALTER TABLE T1 ADD col3 INT

然后再次查詢視圖V1,你想這時的結果是三列呢,還是而列呢?答案是二列。T1架構的改變,并沒有影響到視圖的元數據中,這時候,如果我們要刷新一下視圖V1,我們就可以用:EXEC sp_refreshview V1 命令, 再次查詢,V1的結果就是三列了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享