SQLServer之修改視圖


修改視圖注意事項

修改先前創建的視圖。 其中包括索引視圖。 ALTER VIEW不影響相關的存儲過程或觸發器,並且不會更改權限。

如果原來的視圖定義是使用 WITH ENCRYPTION 或 CHECK OPTION創建的,則只有在 ALTER VIEW 中也包含這些選項時,才會啟用這些選項。

如果當前所用的視圖使用 ALTER VIEW 來修改,則數據庫引擎使用對該視圖的排他架構鎖。 在授予鎖時,如果該視圖沒有活動用戶,則數據庫引擎將從過程緩存中刪除該視圖的所有副本。 引用該視圖的現有計划將繼續保留在緩存中,但一旦被調用就會重新編譯。

ALTER VIEW可應用於索引視圖,但是,ALTER VIEW會無條件地刪除視圖的所有索引。

若要執行 ALTER VIEW,至少需要具有對 OBJECT 的 ALTER 權限。

使用SSMS數據庫管理工具修改視圖

1、連接數據庫,選擇數據庫,展開數據庫-》展開視圖-》選擇要修改的視圖-》選擇設計。

2、在關系圖窗格中-》修改視圖-》修改完成,點擊保存。

3、使用修改的視圖。

使用T-SQL腳本修改視圖

語法:

--聲明數據庫引用
use 數據庫名;
go

--修改視圖
alter view [架構名][.]視圖名
with encryption,schemabinding,view_metadata
as
select_statement
[check option];
go

語法解析:

schema_name
視圖所屬架構的名稱。

view_name
要更改的視圖。

column
將成為指定視圖的一部分的一個或多個列的名稱(以逗號分隔)。

encryption
適用范圍: SQL Server 2008 到 SQL Server 2017 和 Azure SQL Database。

加密 sys.syscomments 中包含 ALTER VIEW 語句文本的項。 WITH ENCRYPTION 可防止視圖作為 SQL Server 復制的一部分進行發布。

schemabinding
將視圖綁定到基礎表的架構。 如果指定了 SCHEMABINDING,則不能以可影響視圖定義的方式來修改基表。 必須首先修改或刪除視圖定義本身,然后才能刪除要修改的表的相關性。 使用 SCHEMABINDING 時,select_statement 必須包含所引用的表、視圖或用戶定義函數的兩部分名稱 (schema.object)。 所有被引用對象都必須在同一個數據庫內。

不能刪除參與使用 SCHEMABINDING 子句創建的視圖的表或視圖,除非該視圖已被刪除或更改,而不再具有架構綁定。 否則, 數據庫引擎將引發錯誤。 另外,如果對參與具有架構綁定的視圖的表執行 ALTER TABLE 語句,而這些語句又會影響視圖定義,則這些語句將會失敗。

view_metadata
指定為引用視圖的查詢請求瀏覽模式的元數據時, SQL Server 實例將向 DB-Library、ODBC 和 OLE DB API 返回有關視圖的元數據信息,而不返回基表的元數據信息。 瀏覽模式的元數據是 數據庫引擎實例返回到客戶端 DB-Library、ODBC 和 OLE DB API 的額外元數據。 如果使用此元數據,客戶端 API 將可以實現可更新客戶端游標。 瀏覽模式的元數據包含結果集中的列所屬的基表的相關信息。

對於使用 VIEW_METADATA 創建的視圖,瀏覽模式的元數據在描述結果集內視圖中的列時,將返回視圖名,而不返回基表名。

使用 WITH VIEW_METADATA 創建視圖時,如果該視圖具有 INSERT 或 UPDATE INSTEAD OF 觸發器,則視圖的所有列(timestamp 列除外)都可更新。 有關詳細信息,請參閱 CREATE VIEW (Transact-SQL) 中的“注釋”部分。

as
視圖要執行的操作。

select_statement
定義視圖的 SELECT 語句。

with check option
要求對該視圖執行的所有數據修改語句都必須符合 select_statement 中所設置的條件。

示例:

--聲明數據庫引用
use testss;
go

--修改視圖
alter view dbo.view1
with encryption,schemabinding,view_metadata
as
select a.id,a.name,a.sex,a.height,b.id as classid
from dbo.test1 as a
inner join dbo.test3 as b on a.classid=b.id;
go

使用修改后的視圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM