ALTER VIEW (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

Modifica una vista creata in precedenza. È possibile utilizzare questa istruzione anche per le viste indicizzate. ALTER VIEW non influisce sulle stored procedure o trigger dipendenti e non cambia i permessi.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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>   
[;]  

Argomenti

schema_name
Nome dello schema a cui appartiene la vista.

view_name
Vista da modificare.

column
Nome o elenco di nomi delimitato da virgole delle colonne che si desidera includere nella vista specificata.

Importante

I permessi per colonne vengono mantenuti solo quando le colonne hanno lo stesso nome prima e dopo ALTER VIEW che viene eseguito.

Nota

Nelle colonne della vista le autorizzazioni per un nome di colonna vengono applicate in un'istruzione CREATE VIEW o ALTER VIEW indipendentemente dall'origine dei dati sottostanti. Ad esempio, se i permessi vengono concessi nella colonna SalesOrderID in un'istruzione CREATE VIEW , un'istruzione ALTER VIEW può rinominare la colonna SalesOrderID , ad esempio in OrderRef, mantenendo comunque i permessi associati alla vista tramite SalesOrderID.

ENCRYPTION
Si applica a: SQL Server 2008 (10.0.x) e versioni successive e database SQL di Azure.

Crittografa le voci in sys.syscomments che contengono il testo dell'istruzione ALTER VIEW . Se si utilizza WITH ENCRYPTION, la vista non viene pubblicata nell'ambito della replica di SQL Server.

SCHEMABINDING
Associa la vista allo schema della tabella o delle tabelle sottostanti. Se si specifica SCHEMABINDING non è possibile apportare modifiche alle tabelle di base, che influiscono sulla definizione della vista. In questi casi, è necessario modificare o eliminare la definizione della vista per rimuovere le dipendenze dalla tabella da modificare. Quando si usa SCHEMABINDING, l'argomento select_statement deve includere i nomi composti da due parti (schema.object) delle tabelle, delle visualizzazioni o delle funzioni definite dall'utente a cui viene fatto riferimento. Tutti gli oggetti a cui viene fatto riferimento devono essere presenti nello stesso database.

Le viste o tabelle che fanno parte di una vista creata con la clausola SCHEMABINDING non possono essere eliminate, a meno che tale vista non venga eliminata o modificata in modo che non sia più associata a uno schema. In caso contrario, il motore di database genera un errore. Inoltre, l'esecuzione ALTER TABLE delle istruzioni su tabelle che partecipano a viste con binding di schema fallisce se queste istruzioni influenzano la definizione della vista.

VIEW_METADATA
Specifica che l'istanza di SQL Server dovrà restituire alle API DB-Library, ODBC e OLE DB le informazioni sui metadati relativi alla vista anziché alla tabella o alle tabelle di base quando vengono richiesti metadati in modalità browse per una query che fa riferimento alla vista. I metadati in modalità browse sono metadati aggiuntivi restituiti dall'istanza del motore di database alle API DB-Library, ODBC e OLE DB sul lato client. Questi metadati consentono alle API sul lato client di implementare cursori sul lato client aggiornabili. I metadati in modalità browse includono informazioni sulla tabella di base a cui appartengono le colonne del set di risultati.

Per le viste create con VIEW_METADATA, i metadati in modalità browse restituiscono il nome della vista anziché i nomi delle tabelle di base nella descrizione delle colonne della vista nel set di risultati.

Quando una vista viene creata usando CON VIEW_METADATA, tutte le sue colonne, tranne una colonna di timestamp , sono aggiornabili se la vista ha INSERT o UPDATE INVECE di OF attiva. Per ulteriori informazioni, consulta la sezione Osservazioni in CREATE VIEW (Transact-SQL).

AS
Azioni che la vista deve eseguire.

select_statement
Istruzione SELECT che definisce la vista.

CON OPZIONE CHECK
Forza il rispetto del set di criteri specificato in select_statement per tutte le istruzioni di modifica dei dati eseguite sulla vista.

Osservazioni:

Per maggiori informazioni su ALTER VIEW, vedi Osservazioni in CREATE VIEW (Transact-SQL).

Nota

Se la precedente definizione di vista è stata creata usando WITH ENCRYPTION o CHECK OPTION, queste opzioni sono abilitate solo se incluse in ALTER VIEW.

Se una vista attualmente utilizzata viene modificata tramite ALTER VIEW, il motore di database accetta un blocco dello schema esclusivo nella vista. Quando viene concesso il blocco e non esistono utenti attivi della vista, il motore di database elimina tutte le copie della vista dalla cache delle procedure. I piani esistenti che fanno riferimento alla vista rimangono nella cache, ma vengono ricompilati per chiamate successive.

ALTER VIEW può essere applicato alle viste indicizzate; tuttavia, ALTER VIEW elimina in modo incondizionato tutti gli indici nella vista.

Autorizzazioni

Per eseguire ALTER VIEW, è necessaria almeno l'autorizzazione ALTER per OBJECT.

Esempi

Nell'esempio seguente viene creata una vista contenente tutti i dipendenti e le relative date di assunzione, denominata EmployeeHireDate. Vengono concesse autorizzazioni alla vista, ma è richiesta una modifica dei requisiti per selezionare i dipendenti con date di assunzione precedenti alla data specificata. La vista viene quindi sostituita tramite l'istruzione 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  

È necessario modificare la vista per includere solo i dipendenti assunti prima del 2002. Se ALTER VIEW non viene utilizzato, ma invece la visualizzazione viene abbandonata e ricreata, la dichiarazione precedentemente usata GRANT e qualsiasi altra affermazione relativa ai permessi relative a questa vista devono essere inserite nuovamente.

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  

Vedi anche

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Creazione di una stored procedure
SELECT (Transact-SQL)
DATI EVENTO (Transact-SQL)
Apportare modifiche allo schema nei database di pubblicazione