ALTER VIEW (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Ändrar en tidigare skapad vy. Detta inkluderar en indexerad vy. ALTER VIEW påverkar inte beroende lagrade procedurer eller triggers och ändrar inte behörigheter.

Transact-SQL syntaxkonventioner

Syntax

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
Är namnet på schemat som vyn tillhör.

view_name
Är åsikten att förändras.

kolumn
Är namnet på en eller flera kolumner, separerade av kommatecken, som ska ingå i den angivna vyn.

Viktigt!

Kolumnbehörigheter bibehålls endast när kolumner har samma namn före och efter att ALTER VIEW utförs.

Anmärkning

I kolumnerna för vyn gäller behörigheterna för ett kolumnnamn över en sats CREATE VIEW eller ALTER VIEW, oavsett källan till den underliggande datan. Till exempel, om behörigheter beviljas i kolumnen SalesOrderID i ett CREATE VIEW-uttalande, kan ett ALTER VIEW-uttalande byta namn på kolumnen SalesOrderID , till exempel till OrderRef, och ändå ha behörigheterna kopplade till vyn med SalesOrderID.

KRYPTERING
Gäller för: SQL Server 2008 (10.0.x) och senare samt Azure SQL Database.

Krypterar posterna i sys.syscomments som innehåller texten i ALTER VIEW-satsen. WITH ENCRYPTION förhindrar att vyn publiceras som en del av SQL Server-replikeringen.

SCHEMABINDNING
Binder vyn till schemat för den underliggande tabellen eller tabellerna. När SCHEMABINDING specificeras kan bastabellerna inte ändras på ett sätt som påverkar vydefinitionen. Själva vydefinitionen måste först ändras eller tas bort för att ta bort beroenden i tabellen som ska ändras. När du använder SCHEMABINDING måste select_statement inkludera de tvådelade namnen (schema.objekt) av tabeller, vyer eller användardefinierade funktioner som refereras. Alla refererade objekt måste finnas i samma databas.

Vyer eller tabeller som deltar i en vy skapad med SCHEMABINDING-klausulen kan inte tas bort, om inte den vyn tas bort eller ändras så att den inte längre har schemabindning. Annars ger databasmotorn ett fel. Dessutom misslyckas körning av ALTER TABLE-satser på tabeller som deltar i vyer med schemabindning om dessa satser påverkar vydefinitionen.

VIEW_METADATA
Specificerar att instansen av SQL Server kommer att returnera metadatainformationen om vyn till DB-biblioteket, ODBC och OLE DB API:erna, istället för bastabellen eller tabellerna, när blädringslägesmetadata begärs för en fråga som refererar till vyn. Browse-mode metadata är ytterligare metadata som instansen av Database Engine returnerar till klientsidans DB-bibliotek, ODBC och OLE DB API:er. Denna metadata gör det möjligt för klientsidans API:er att implementera uppdaterbara klientsidans markörer. Blädderlägesmetadata inkluderar information om bastabellen som kolumnerna i resultatuppsättningen tillhör.

För vyer skapade med VIEW_METADATA returnerar blädderlägesmetadata vyns namn och inte bastabellernas namn när den beskriver kolumner från vyn i resultatuppsättningen.

När en vy skapas med WITH VIEW_METADATA kan alla dess kolumner, förutom en tidsstämpelkolumn , uppdateras om vyn har INSERT eller UPDATE ISTÄLLET FÖR triggers. För mer information, se avsnittet Anmärkningar i SKAPA VY (Transact-SQL).

SOM
Är det handlingar som synsättet ska ta.

select_statement
Är SELECT-satsen som definierar vyn.

MED CHECK-ALTERNATIV
Tvingar alla dataändringar som utförs mot visningen att följa kriterierna som satts i select_statement.

Anmärkningar

För mer information om ALTER VIEW, se Anmärkningar i CREATE VIEW (Transact-SQL).

Anmärkning

Om den tidigare vydefinitionen skapades med WITH ENCRYPTION eller CHECK OPTION, aktiveras dessa alternativ endast om de ingår i ALTER VIEW.

Om en vy som används för närvarande ändras med hjälp av ALTER VIEW, tar databasmotorn ett exklusivt schemalås på vyn. När låset har beviljats och det inte finns några aktiva användare av vyn tar databasmotorn bort alla kopior av vyn från procedurens cacheminne. Befintliga planer som refererar till vyn finns kvar i cacheminnet men kompileras om när de anropas.

ALTER VIEW kan tillämpas på indexerade vyer. ALTER VIEW släpper dock villkorslöst alla index i vyn.

Permissions

Om du vill köra ALTER VIEW krävs minst ALTER-behörighet för OBJECT.

Examples

Följande exempel skapar en vy som innehåller alla anställda och deras anställningsdatum kallad EmployeeHireDate. Behörigheter ges till visningen, men kraven ändras för att välja anställda vars anställningsdatum infaller före ett visst datum. Sedan ALTER VIEW används för att ersätta vyn.

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  

Synsättet måste ändras till att endast omfatta de anställda som anställdes tidigare 2002. Om ALTER VIEW inte används, utan istället vyn släpps och återskapas, måste den tidigare använda GRANT-satsen och alla andra uttalanden som hanterar behörigheter relaterade till denna vy matas in igen.

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  

Se även

SKAPA TABELL (Transact-SQL)
SKAPA VY (Transact-SQL)
DROP VIEW (Transact-SQL)
Skapa en lagrad procedur
SELECT (Transact-SQL)
HÄNDELSEDATA (Transact-SQL)
Gör schemaändringar i publikationsdatabaser