ALTER VIEW (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Módosítja a korábban létrehozott nézetet. Ez magában foglalja az indexelt nézetet is. ALTER VIEW nem befolyásolja a függő tárolt eljárásokat vagy triggereket, és nem változtatja meg a jogosultságokat.

Transact-SQL szintaxis konvenciók

Szemantika

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
Ez annak a sémának a neve, amelyhez a nézet tartozik.

nézet_név
A megváltozásra való nézet.

oszlop
Egy vagy több oszlop neve, amelyeket vesszőkkel választanak el, és amelyek a megadott nézet részei lesznek.

Fontos

Az oszlopengedélyek csak akkor maradnak fenn, ha az oszlopok ugyanazt a nevet viselik előtte és utána ALTER VIEW .

Megjegyzés:

A nézet oszlopaiban az oszlopok nevének engedélyei egy vagy CREATE VIEW több ALTER VIEW utasításra vonatkoznak, függetlenül az alapul szolgáló adatok forrásától. Például, ha a SalesOrderID oszlopban engedélyek vannak egy CREATE VIEW utasításban, egy ALTER VIEW utasítás átnevezheti a SalesOrderID oszlopot, például OrderRef-re, és továbbra is megkapja a nézethez kapcsolódó jogosultságokat a SalesOrderID segítségével.

TITKOSÍTÁS
Érvényes: SQL Server 2008 (10.0.x) és újabb verziók, valamint Azure SQL Database.

Titkosítja a sys.syscomments azon bejegyzéseit, amelyek tartalmazzák az utasítás szövegét ALTER VIEW . A TITKOSÍTÁSSAL EGYÜTT megakadályozza, hogy a nézet az SQL Server replikáció részeként megjelenjen.

SÉMAKÖTÉS
A nézetet a tábla vagy táblák sémájához köti. Amikor a SCHEMABINDING meg van szabva, az alaptáblákat nem lehet úgy módosítani, hogy az befolyásolja a nézet definícióját. Magát a nézet definícióját először módosítani vagy el kell hagyni, hogy eltávolítsuk a módosítandó tábla függőségeit. AMIKOR A SKEMABINDINGET HASZNÁLJUK , select_statement tartalmaznia kell a kétrészes neveket (séma.objektum) táblázatok, nézetek vagy felhasználó által definiált függvények, amelyek hivatkoznak. Minden hivatkozott objektumnak ugyanabban az adatbázisban kell lennie.

Azok a nézetek vagy táblák, amelyek részt vesznek egy SCHEMABINDING záradéktal létrehozott nézetben, nem hagyhatók el, hacsak az adott nézetet eltávolítják vagy módosítják, így már nem lesz séma kötelék. Ellenkező esetben az Adatbázis Motor hibát okoz. Emellett olyan utasítások ALTER TABLE végrehajtása olyan táblákon, amelyek részt vesznek olyan nézetekben, amelyek séma kötéssel rendelkeznek, nem sikerülnek, ha ezek az állítások befolyásolják a view definíciót.

VIEW_METADATA
Megadja, hogy az SQL Server példánya visszaadja a nézet metaadatadatait a DB-Library, ODBC és OLE DB API-kba, nem az alaptáblára vagy táblákra, amikor böngészési módban egy lekérdezéshez kérnek metaadatokat, amely a nézetre hivatkozik. A böngészési mód metaadatok további metaadatok, amelyeket az Database Engine példánya visszaad a kliensoldali DB-Library, ODBC és OLE DB API-kba. Ez a metaadat lehetővé teszi a kliens oldali API-k számára, hogy frissíthető kliensoldali kurzorokat valósítsanak meg. A böngészési módú metaadatok tartalmazzák az alaptáblát, amelyhez az eredményhalmaz oszlopai tartoznak.

Az VIEW_METADATA-vel létrehozott nézeteknél a böngészési mód metaadat a nézet nevét adja vissza, nem az alaptábla neveket, amikor az eredményhalmazban lévő nézetből származó oszlopokat írja le.

Amikor egy nézetet WITH VIEW_METADATA használatával hoznak létre, az összes oszlopa, kivéve egy időbélyeg oszlopot, frissíthető, ha a nézetnek vannak INSERT vagy UPDATE NEM AZ INDÍTÓI. További információért lásd a (Transact-SQL) megjegyzések szakaszátCREATE VIEW.

AMINT
A nézetnek meg kell tennie a lépéseit?

select_statement
Ez a SELECT utasítás, amely a nézetet definiálja.

ELLENŐRZŐ OPCIÓVAL
Arra kényszeríti, hogy minden adatmódosítási utasítás, amelyet a nézet ellen hajtanak végre, hogy kövessék a select_statement-n belülről meghatározott kritériumokat.

Megjegyzések

További információért ALTER VIEWlásd a (Transact-SQL) megjegyzéseketCREATE VIEW.

Megjegyzés:

Ha az előző nézet definícióját WITH ENCRYPTION vagy CHECK OPTION használatával hozták létre, ezek az opciók csak akkor engedélyezettek, ha bekerülnek a ALTER VIEW.

Ha egy jelenleg használt nézetet módosít a rendszerALTER VIEW, a Database Engine kizárólagos sémazárolást alkalmaz a nézeten. Ha a zárolás meg van adva, és nincsenek aktív felhasználói a nézetnek, az adatbázismotor törli a nézet összes példányát az eljárásgyorsítótárból. A nézetre hivatkozó meglévő tervek továbbra is a gyorsítótárban maradnak, de amikor meghívják, újrafordításra kerülnek.

ALTER VIEW indexelt nézetekre alkalmazható; azonban ALTER VIEW feltétel nélkül elveti az összes indexet a nézetben.

Permissions

A végrehajtáshoz ALTER VIEWlegalább alter engedélyre van szükség az OBJEKTUMon.

Példák

A következő példa egy olyan nézetet hoz létre, amely tartalmazza az összes alkalmazottat és a felvételi dátumokat, amelyet .EmployeeHireDate A nézethez engedélyek kerülnek, de a követelmények megváltoznak, hogy kiválasztják azokat az alkalmazottakat, akiknek a felvételi dátuma egy adott dátum előtt esik. Ezután ALTER VIEW a nézet helyettesítésére használják.

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  

A nézetet meg kell változtatni, hogy csak azokat az alkalmazottakat foglalja magában, akiket korábban 2002alkalmaztak. Ha ALTER VIEW nem használják, hanem a nézetet kihagyják és újraalkotják, akkor a korábban használt GRANT utasítást és minden más, ehhez kapcsolódó jogosultságokkal foglalkozó állítást újra be kell vinni.

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  

Lásd még:

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Tárolt eljárás létrehozása
VÁLASZT (Transact-SQL)
ESEMÉNYADATOK (Transact-SQL)
Sémamódosítások a kiadványi adatbázisokon