ALTER VIEW (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison d’analytique SQL dans Microsoft FabricEntrepôt dans Microsoft FabricBase de données SQL dans Microsoft Fabric

Modifie une vue précédemment créée. Inclut une vue indexée. ALTER VIEW n’affecte pas les procédures stockées ou déclencheurs dépendants et ne modifie pas les permissions.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

schema_name
Nom du schéma auquel appartient la vue.

view_name
Vue à modifier.

column
Nom(s) d'une ou de plusieurs colonnes séparées par des virgules, devant faire partie de la vue donnée.

Important

Les autorisations de colonnes ne sont maintenues que lorsque les colonnes portent le même nom avant et après ALTER VIEW l’exécution de la colonne.

Notes

Dans les colonnes de la vue, les autorisations d’un nom de colonne s’appliquent sur une CREATE VIEW ou ALTER VIEW une instruction, quelle que soit la source des données sous-jacentes. Par exemple, si des permissions sont accordées sur la colonne SalesOrderID dans une CREATE VIEW instruction, une ALTER VIEW instruction peut renommer la colonne SalesOrderID, par exemple en OrderRef, tout en conservant les permissions associées à la vue via SalesOrderID.

ENCRYPTION
S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures, et Azure SQL Database.

Chiffre les entrées dans sys.syscomments qui contiennent le texte de l’instruction ALTER VIEW . L'utilisation de WITH ENCRYPTION évite la publication de la vue dans le cadre de la réplication SQL Server.

SCHEMABINDING
Lie la vue au schéma des tables sous-jacentes ou des autres tables. Lorsque SCHEMABINDING est spécifié, les tables de base ne peuvent pas être modifiées d'une manière susceptible d'affecter la définition de la vue. La définition de la vue proprement dite doit d'abord être modifiée ou supprimée pour éliminer les dépendances de la table à modifier. Quand vous utilisez l’argument SCHEMABINDING, select_statement doit comprendre les noms en deux parties (schema.object) des tables, des vues ou des fonctions définies par l’utilisateur référencées. Tous ces objets référencés doivent se trouver dans la même base de données.

Les vues ou tables impliquées dans une vue créée avec la clause SCHEMABINDING ne peuvent pas être supprimées, sauf si cette vue perd, à la suite de sa suppression ou de sa modification, la liaison au schéma. Dans le cas contraire, le Moteur de base de données génère une erreur. De plus, exécuter ALTER TABLE des instructions sur des tables participant à des vues avec liaison de schéma échoue si ces instructions affectent la définition de la vue.

VIEW_METADATA
Indique que l'instance de SQL Server retourne aux interfaces de programmation d'applications (API) DB-Library, ODBC et OLE DB les informations de métadonnées sur la vue, plutôt que sur la ou les tables de base, lorsque des métadonnées en mode lecture sont sollicitées pour une requête qui fait référence à la vue. Les métadonnées en mode de navigation sont des métadonnées supplémentaires que l'instance du moteur de base de données retourne aux API DB-Library, ODBC et OLE DB côté client. Ces métadonnées permettent aux API clientes d'implémenter des curseurs clients pouvant être mis à jour. Les métadonnées en mode Parcourir comprennent des informations sur la table de base à laquelle appartiennent les colonnes du jeu de résultats.

Dans le cas d'une vue créée par le biais de VIEW_METADATA, les métadonnées en mode Parcourir retournent le nom de la vue, et non celui de la table de base, lors de la description des colonnes de la vue comprise dans le jeu de résultats.

Lorsqu’une vue est créée en utilisant AVEC VIEW_METADATA, toutes ses colonnes, sauf une colonne d’horodatage , sont mises à jour si la vue a INSERT ou UPDATE INSTEAD déclenche OF. Pour plus d’informations, voir la section Remarques dans CREATE VIEW (Transact-SQL).

AS
Actions que la vue doit entreprendre.

select_statement
Instruction SELECT qui définit la vue.

AVEC OPTION DE VÉRIFICATION
Oblige toutes les instructions de modification de données exécutées sur la vue à respecter les critères définis dans select_statement.

Notes

Pour plus d’informations sur ALTER VIEW, voir Remarques dans CREATE VIEW (Transact-SQL).

Notes

Si la définition précédente de la vue a été créée en utilisant l’option AVEC CHIFFREMENT ou l’option CHECK, ces options ne sont activées que si elles sont incluses dans ALTER VIEW.

Si une vue actuellement utilisée est modifiée par l’utilisation ALTER VIEWde , le Moteur de base de données prend un verrouillage de schéma exclusif sur la vue. Lorsque le verrou est attribué (et qu'il n'y a aucun utilisateur actif de la vue), le moteur de base de données supprime toutes les copies de la vue du cache de procédure. Les plans existants qui font référence à la vue restent dans le cache, mais ils sont recompilés lorsqu'ils sont invoqués.

ALTER VIEW peut être appliqué aux vues indexées ; cependant, ALTER VIEW elle supprime inconditionnellement tous les index de la vue.

Autorisations

Pour exécuter ALTER VIEW, au minimum, une permission ALTER sur OBJET est requise.

Exemples

Cet exemple crée une vue qui contient tous les employés et leurs dates d'embauche, appelée EmployeeHireDate. Des autorisations sont accordées à la vue, mais les conditions ayant changé, il est nécessaire de sélectionner des employés dont la date d'embauche tombe avant une certaine date. Ensuite, l'instruction ALTER VIEW est utilisée pour remplacer la vue.

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  

La vue doit être modifiée pour inclure uniquement les employés qui avaient été embauchés avant l'année 2002. Si ALTER VIEW la vue n’est pas utilisée, mais que la vue est supprimée et recréée, l’instruction précédemment utilisée GRANT ainsi que toute autre instruction traitant des permissions relatives à cette vue doivent être saisies à nouveau.

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  

Voir aussi

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Créer une procédure stockée
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Modifier le schéma dans les bases de données de publication