Modificare le viste

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

Dopo aver definito una vista, è possibile modificarne la definizione nel motore di database di SQL Server senza eliminare e ricreare la vista, usando SQL Server Management Studio o Transact-SQL.

Limitazioni e restrizioni

  • La modifica di una vista non influisce sugli oggetti dipendenti, ad esempio stored procedure o trigger, a meno che la definizione della vista non venga modificata in modo che l'oggetto dipendente non sia più valido.

  • Se si modifica una vista in uso con ALTER VIEW, nel motore di database viene accettato un blocco di schema esclusivo sulla 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.

  • È possibile utilizzare ALTER VIEW per viste indicizzate. Tuttavia, in questo caso vengono eliminati tutti gli indici nella vista, senza eccezioni.

Autorizzazioni

Per eseguire ALTER VIEW, è richiesta come minimo l'autorizzazione ALTER per OBJECT.

Usare SQL Server Management Studio

  1. In Esplora oggetti fare clic sul segno più accanto al database in cui si trova la vista, quindi fare di nuovo clic sul segno più accanto alla cartella Viste.

  2. Fare clic con il pulsante destro del mouse sulla vista che si desidera modificare, quindi scegliere Progettazione.

  3. Nel riquadro del diagramma di Progettazione query, apportare le modifiche alla vista con uno dei metodi seguenti:

    1. Selezionare o deselezionare le caselle di controllo di qualsiasi elemento che si desidera aggiungere o rimuovere.

    2. Fare clic con il pulsante destro del mouse all'interno del riquadro del diagramma, scegliere Aggiungi tabella e quindi selezionare le altre colonne da aggiungere alla vista nella finestra di dialogo Aggiungi tabella.

    3. Fare clic con il pulsante destro del mouse sulla barra del titolo della tabella da rimuovere e selezionare Rimuovi.

  4. Nel menu File selezionare Salvanome vista.

Usare Transact-SQL

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio si crea innanzitutto una vista che, successivamente, viene modificata tramite ALTER VIEW. Una clausola WHERE viene aggiunta alla definizione della vista.

    USE AdventureWorks2022;
    GO
    
    -- Create a view
    CREATE VIEW HumanResources.EmployeeHireDate
    AS
    SELECT p.FirstName,
         p.LastName,
         e.HireDate
    FROM HumanResources.Employee AS e
    INNER JOIN Person.Person AS p
         ON e.BusinessEntityID = p.BusinessEntityID;
    
    -- Modify the view by adding a WHERE clause to limit the rows returned
    ALTER VIEW HumanResources.EmployeeHireDate
    AS
    SELECT p.FirstName,
         p.LastName,
         e.HireDate
    FROM HumanResources.Employee AS e
    INNER JOIN Person.Person AS p
         ON e.BusinessEntityID = p.BusinessEntityID
    WHERE HireDate < CONVERT(DATETIME, '20020101', 101);
    GO
    

Passaggi successivi