ALTER VIEW (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

以前に作成されたビューを変更します。 これにはインデックス付きビューが含まれます。 ALTER VIEW は、従属するストアド プロシージャやトリガーに影響を与えず、権限を変更することもありません。

Transact-SQL 構文表記規則

構文

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ] [ ; ]  
  
<view_attribute> ::=   
{   
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]       
}   
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
ALTER VIEW [ schema_name . ] view_name [  ( column_name [ ,...n ] ) ]   
AS <select_statement>   
[;]  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

schema_name
ビューが所属するスキーマの名前を指定します。

view_name
変更するビューを指定します。

column
指定したビューに含まれている列の名前を 1 つ以上指定します。列を複数指定するときは、コンマで区切ります。

重要

列の権限は、ALTER VIEW の実行の前後で列の名前が変わらないときだけ維持されます。

注意

ビューの列では、基底となるデータのソースにかかわらず、列名に対する権限は、CREATE VIEW ステートメントまたは ALTER VIEW ステートメントを超えて適用されます。 たとえば、CREATE VIEW ステートメントで SalesOrderID 列に対して権限が与えられる場合、ALTER VIEW ステートメントは SalesOrderID 列の名前を OrderRef などに変更でき、その後も SalesOrderID を使用してビューに関連付けられた権限を保持します。

ENCRYPTION
適用対象: SQL Server 2008 (10.0.x) 以降と Azure SQL Database。

ALTER VIEW ステートメントのテキストを含んでいる sys.syscomments のエントリを暗号化します。 WITH ENCRYPTION を指定すると、そのビューを SQL Server レプリケーションの一部としてパブリッシュできなくなります。

SCHEMABINDING
基になるテーブルのスキーマにビューをバインドします。 SCHEMABINDING を指定すると、ビュー定義に影響する変更をベース テーブルに加えられなくなります。 まずビュー定義を変更または削除して、変更するテーブルとの依存関係を解消する必要があります。 SCHEMABINDING を使用する場合は、select_statement に、参照されるテーブル、ビュー、またはユーザー定義関数の名前として、2 つの部分から構成される名前 (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 内で設定される条件に従うよう強制します。

解説

ALTER VIEW について詳しくは、「CREATE VIEW (Transact-SQL)」の「解説」をご覧ください。

注意

以前のビュー定義が WITH ENCRYPTION または CHECK OPTION を使用して作成されている場合、これらのオプションは、ALTER VIEW で指定される場合にのみ有効となります。

現在使用されているビューを ALTER VIEW を使用して変更する場合、データベース エンジンではビューに対して排他スキーマ ロックが設定されます。 ロックが許可され、ビューのアクティブ ユーザーがいなくなると、データベース エンジンではプロシージャ キャッシュからビューのすべてのコピーが削除されます。 ビューを参照している既存のプランはキャッシュに残りますが、呼び出されると再コンパイルされます。

ALTER VIEW は、インデックス付きビューに適用できますが、そのビューのすべてのインデックスを無条件で削除します。

アクセス許可

ALTER VIEW を実行するには、少なくとも OBJECT に対する ALTER 権限が必要です。

次の例では、すべての従業員とその雇用日を含んだ EmployeeHireDate というビューを作成します。 ビューには権限が与えられますが、必要条件が変更されて、雇用日が特定の日付よりも古い従業員を選択することになりました。 そこで、ALTER VIEW を使用してビューを変更します。

USE AdventureWorks2022;  
GO  
CREATE VIEW HumanResources.EmployeeHireDate  
AS  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS  p  
ON e.BusinessEntityID = p.BusinessEntityID ;  
GO  

2002 年より前に雇用された従業員のみを含むようにビューを変更する必要があります。 ALTER VIEW を使用せずに、ビューを削除して再作成する場合は、以前に使用されていた GRANT ステートメント、およびこのビューに関係する権限を処理するその他すべてのステートメントを再入力する必要があります。

ALTER VIEW HumanResources.EmployeeHireDate  
AS  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS p  
ON e.BusinessEntityID = p.BusinessEntityID  
WHERE HireDate < CONVERT(DATETIME,'20020101',101) ;  
GO  

参照

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
ストアド プロシージャの作成
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
パブリケーション データベースでのスキーマの変更