欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

你是否也忘了刷新視圖?

系統 1730 0
原文: 你是否也忘了刷新視圖?

起因:

? ? ? ? ?由于工作原因,我隔幾天就要執行一批開發人員提供過來的腳本,部分是新需求的開發,部分是修復bug。往往包含有幾百個。我用工具批量執行之后,系統繼續運行,后來反反復復會有這樣那樣的錯誤,其中一個,經過開發人員的檢查,是因為視圖沒刷新。
? ? ? ? ?對此我納悶了很久,視圖不就是一堆select語句嗎?怎么還要刷新?難道表改了不會跟著改?為此,我首先自己做一個實驗,發現的確不會馬上改過來,至于啥時候才更改,也不清楚,聽說從2000的時候,這個問題已經存在,看來我孤陋寡聞了。

測試:


?步驟一:首先執行下面語句


      USE tempdb

GO

--創建表

IF OBJECT_ID('testTB') IS NOT NULL 

    DROP TABLE testTB

GO

CREATE TABLE testTB ( id INT, NAME VARCHAR(10) )

--插入測試數據

INSERT INTO testTB

SELECT 1,'a'

UNION ALL 

SELECT 2,'b'

UNION ALL 

SELECT 3,'c'



IF OBJECT_ID('V_testTB') IS NOT NULL 

DROP VIEW V_testTB

GO

CREATE   VIEW V_testTB

AS

    SELECT  *

    FROM    testTB

go 



SELECT * FROM V_testTB


    

得到結果:




步驟二:更改表結構

      --添加一列

ALTER TABLE testTB ADD  age INT
    

然后再來執行一下視圖:

      SELECT * FROM V_testTB
    

得到結果:



反復執行了10次,結果還是沒變。

步驟三:使用存儲過程刷新視圖


      sp_refreshview V_testTB
    

然后再執行查詢視圖的語句:

      SELECT * FROM V_testTB
    

眼前一亮,得到結果:



可以看出,結構已經刷新,證明有效果了。

分析:


? ? ? ? 細心的人應該發現,其實視圖里面我用了*號。可以通過實驗來證明,如果不用星號,是沒問題的。而如果指定了列名,那么在新加一列的時候,管它有沒有刷新,都不會有問題,因為你壓根就不會用到這列,那么如果是刪除呢?現在來試試,建表的代碼依舊,把原有的添加列的代碼改成刪除列,另外*號依舊保留:

      --刪除一列

ALTER TABLE testTB DROP   COLUMN  id
    

再執行:

      SELECT * FROM V_testTB
    

會得到以下的錯誤:



證明刪除是會報錯的,不需要刷新,那么估計大家也猜到,就算指定列,也會報錯,現在來證實一下:



這次報錯是這個,部分代碼我就不寫了。

總結:


根據上面的實驗,可以得出:
?1、視圖里面盡可能不要出現*號。*號不僅對性能有影響,也不便于結構的更新。
? ? ? ?
?2、無論視圖所涉及的表結構有無修改,每次執行腳本后,刷新一下,總是好的。并且我遇到過這樣的情景,一個名字是存儲過程的名字,但是在使用:

      SELECT DISTINCT

        'EXEC sp_refreshview ''' + name + ''''

FROM    sys.objects AS so

        INNER JOIN sys.sql_expression_dependencies AS sed ON so.object_id = sed.referencing_id

WHERE   so.type = 'V'

        AND sed.referenced_id = OBJECT_ID('testTB') ;


    

下面語句中時竟然能查出來,證明定義的時候有問題,所以這一步也同時可以檢查一下會不會存在問題對象。順帶說一句,上面的腳本是把需要刷新的視圖拼接出來,然后一次性執行。




你是否也忘了刷新視圖?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲人成在线播放 | 精久视频| 欧美性猛交一区二区三区精品 | 国产一级特黄毛片在线毛片 | 日韩有码一区 | 一区二区三区国产免费 | 亚洲一区二区三区中文字幕 | 在线视频a | 欧美影院入口 | 青草草在线视频 | 蜜臀视频在线播放 | 成人一级黄色大片 | 成人免费网站视频 | www香蕉视频 | 九九色综合 | 亚洲国产一区二区三区四区 | 成人精品一区二区三区 | 仇爱电视剧泰剧在线观看免费播放 | 涩久久| 男女视频在线 | 91亚洲国产成人精品性色 | 日本香港三级和澳门三级 | 日韩欧美在线观看 | 欧美久久久久久久一区二区三区 | av在线一区二区三区 | 好大好硬好长好爽a网站 | 亚洲一区和二区 | 欧美久久久久久 | 久久久www成人免费精品张筱雨 | 久久se精品一区精品二区 | 午夜影院18 | 香蕉久久久久久狠狠色 | 免费av大全 | 色综合久久久久久久久五月性色 | 成人全黄三级视频在线观看 | 视频二区| 成人影院在线 | gogo全球大胆高清人露出91 | 一级毛片私人影院老司机 | 久久99精品久久 | 清纯唯美综合网 |