熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

用ALTER VIEW來改變視圖

2013-11-13 15:43:41  來源: Oracle 

  如果你需要改變或者更新一個視圖(view)或者維護當前的存儲過程或者觸發器我建議你使用ALTER VIEW盡管停止視圖並重新建立視圖是一個誘人的想法但這樣做有可能會刪除視圖上的全部許可(permission)存儲過程和觸發器
  
  ALTER VIEW的語法幾乎與CREATE VIEW完全相同而且像CREATE VIEW那樣你可以通過添加WITH ENCRYPTION和(或者)WITH SCHEMABINGDING來改變一個視圖
  
  但是使用ALTER VIEW還是有幾個需要注意的地方如果你的視圖訪問新的對象那麼該視圖的許可必須和新對象的許可一樣否則視圖不能成功訪問新對象
  
  此外修改視圖的用戶必須擁有與該視圖有關的表格視圖表格值函數的ALTER VIEW和SELECT許可以及對該視圖調用的標量函數(scalarvalued function)的EXECUTE許可
  
  你還需要牢記一點如果你最初用WITH ENCRYPTION或者CHECK OPTION創建的視圖你必須在ALTER VIEW語句後面再次包含這些參數也就是說如果你修改了視圖那麼你必須重新設置WITH ENCRYPTION和CHECK OPTION這些參數不會自動保留下來
  
  在下面的例子中我將創建一個簡單的視圖並運行它然後我將修改它確認它的結果並用sp_helptext來查看視圖文本中改變的地方
  
  首先我將建立一個簡單的視圖它將調出authors表格中所有加利福尼亞州作者的名姓以及所在城市
  
  CREATE VIEW vwCalAuthors
  AS
  Select au_fname au_lname city
  FROM authors
  where state = CA
  With CHECK OPTION
  GO
  
  讓我們看看這個視圖工作的情況如何
  
  SELECT * FROM vwCalAuthors
  
  au_fname       au_lname       city    
                     
  Johnson        White         Menlo Park
  Marjorie        Green          Oakland
  Cheryl         Carson         Berkeley
  Heather        McBadden     Vacaville
  
  ( row(s) affected)
  
  現在我決定讓這個視圖只反映加尼弗尼亞州奧克蘭市的作者情況
  
  ALTER VIEW vwCalAuthors
  AS
  Select au_fname au_lname city
  FROM authors
  WHERE state = CA and city = Oakland
  GO
  
  讓我們運行這個result set來得到奧克蘭市的作者信息
  
  au_fname    au_lname    city   
                    
  Marjorie     Green        Oakland
  Dean        Straight      Oakland
  Dirk         Stringer      Oakland
  Stearns      MacFeather  Oakland
  Livia        Karsen      Oakland
  
  ( row(s) affected)
  
  最後如果相對於運行result set你更情願調用改變後的視圖文本你可以用sp_helptext系統存儲過程來查看隱藏在視圖後面的文本(記住ALTER VIEW改變了視圖最初創建時在第一位置所使用的CREATE VIEW語句因此在你的結果中你應該看到的語句
  
  注意想一想我們還遺漏了什麼我們在修改視圖時沒有包括CHECK OPTION現在它已經沒有了在每次修改視圖時我們都必須手工重置CHECK OPTION和WITH ENCRYTION
  
  Sp_helptextvwCalAuthors
  
  Text
  
  CREATE VIEW vwCalAuthors
  AS Select au_fname au_lname city
  FROM authors
  WHERE state = CAand city = Oakland
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/17204.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.