sql 刷新視圖
更新時間:2009年07月18日 14:54:40 作者:
視圖會保存元數(shù)據(jù),列,安全,以及依賴等信息,如果我們把基礎表的架構更改了,并不會直接反映到視圖上來;更改架構后,使用sp_refreshview存儲過程刷新視圖的元數(shù)據(jù)是一個好習慣;
比如我們創(chuàng)建了一個表T1和一個T1的視圖V1,然后更改T1,再看V1的結果:
首先創(chuàng)建表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
然后創(chuàng)建T1的視圖V1:
CREATE VIEW V1
AS
SELECT * FROM T1
在現(xiàn)實實踐中,要避免在視圖中的SELECT語句中使用*,在這只是演示。如果你查詢視圖V1就會出現(xiàn)以下結果:
接下來,我們對表T1添加一列col3:
ALTER TABLE T1 ADD col3 INT
然后再次查詢視圖V1,你想這時的結果是三列呢,還是而列呢?答案是二列。T1架構的改變,并沒有影響到視圖的元數(shù)據(jù)中,這時候,如果我們要刷新一下視圖V1,我們就可以用:EXEC sp_refreshview V1 命令, 再次查詢,V1的結果就是三列了。
首先創(chuàng)建表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
然后創(chuàng)建T1的視圖V1:
復制代碼 代碼如下:
CREATE VIEW V1
AS
SELECT * FROM T1
在現(xiàn)實實踐中,要避免在視圖中的SELECT語句中使用*,在這只是演示。如果你查詢視圖V1就會出現(xiàn)以下結果:

接下來,我們對表T1添加一列col3:
復制代碼 代碼如下:
ALTER TABLE T1 ADD col3 INT
然后再次查詢視圖V1,你想這時的結果是三列呢,還是而列呢?答案是二列。T1架構的改變,并沒有影響到視圖的元數(shù)據(jù)中,這時候,如果我們要刷新一下視圖V1,我們就可以用:EXEC sp_refreshview V1 命令, 再次查詢,V1的結果就是三列了。
相關文章
SQL Server復制刪除發(fā)布時遇到錯誤18752的問題及解決方法
朋友反饋他無法刪除一臺SQL Server數(shù)據(jù)庫上的發(fā)布,具體情況為刪除一個SQL Server Replication的發(fā)布時,遇到這樣的錯誤問題如何解決呢,下面小編給大家分享SQL Server復制刪除發(fā)布時遇到錯誤18752的問題及解決方法,感興趣的朋友一起看看吧2024-01-01SQL Server誤區(qū)30日談 第11天 鏡像在檢測到故障后瞬間就能故障轉(zhuǎn)移
數(shù)據(jù)庫鏡像的故障轉(zhuǎn)移既可以自動發(fā)起,也可以手動發(fā)起2013-01-01SQL有外連接的時候注意過濾條件位置否則會導致網(wǎng)頁慢
這個SQL之所以跑得慢是因為開發(fā)人員把SQL的條件寫錯位置了 正確的寫法應該是下面這樣的,感興趣的朋友可以參考下2013-05-05SQL Server 復制需要有實際的服務器名稱才能連接到服務器
今天在做sql Server 2005的實驗的時候碰到的問題,問題描述很清楚,懷疑是我以前給計算機修改了名稱而導致的.可以用select @@servername和select serverproperty ('servername')對照一下,兩個的結果是否一樣2012-06-06order by newid() 各種數(shù)據(jù)庫隨機查詢的方法
order by newid() 各種數(shù)據(jù)庫隨機查詢的方法,需要的朋友可以參考一下2013-04-04SQL對數(shù)據(jù)進行按月統(tǒng)計或?qū)?shù)據(jù)進行按星期統(tǒng)計的實例代碼
這篇文章主要介紹了SQL對數(shù)據(jù)進行按月統(tǒng)計或?qū)?shù)據(jù)進行按星期統(tǒng)計的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08