ALTER VIEW (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

Изменяет ранее созданное представление, в том числе индексированное. ALTER VIEW не влияет на зависимые хранимые процедуры или триггеры и не меняет права доступа.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

schema_name
Имя схемы, которой принадлежит представление.

view_name
Представление, которое нужно изменить.

column
Имя столбца или разделенные запятыми имена нескольких столбцов, входящих в состав указанного представления.

Внимание

Разрешения столбцов сохраняются только тогда, когда столбцы имеют одинаковое имя до и после ALTER VIEW выполнения.

Примечание.

В столбцах представления разрешения для имени столбца применяются в пределах CREATE VIEW или ALTER VIEW инструкции независимо от источника базовых данных. Например, если разрешения предоставлены в колонке SalesOrderID в CREATE VIEW операторе, ALTER VIEW оператор может переименовать столбец SalesOrderID, например в OrderRef, и при этом сохранять права, связанные с просмотром с использованием SalesOrderID.

ШИФРОВАНИЕ
Область применения: SQL Server 2008 (10.0.x) и более поздних версий и База данных SQL Azure.

Шифрует записи в sys.syscomments , содержащие текст инструкции ALTER VIEW . Предложение WITH ENCRYPTION предотвращает публикацию представления при репликации SQL Server.

SCHEMABINDING
Привязывает представление к схеме базовой таблицы или таблиц. Если аргумент SCHEMABINDING указан, изменить базовые таблицы таким образом, чтобы это повлияло на определение представления, нельзя. Для удаления зависимостей из таблицы, которую требуется изменить, вначале нужно изменить или удалить само представление. При использовании аргумента SCHEMABINDING инструкция select_statement должна включать двухкомпонентные (schema.object) имена таблиц, представлений или пользовательских функций, упоминаемых в предложении. Все указанные в инструкции объекты должны находиться в одной базе данных.

Представления или таблицы, входящие в представление, созданное при помощи предложения SCHEMABINDING, не могут быть удалены, пока это представление не будет удалено или изменено так, что больше не будет привязано к схеме. В противном случае ядро СУБД вызывает ошибку. Кроме того, выполнение ALTER TABLE операторов в таблицах, участвующих в представлениях с привязкой к схеме, не срабатывает, если эти операторы влияют на определение представления.

VIEW_METADATA
Указывает, что экземпляр SQL Server вернется в БИБЛИОТЕКу DB, ODBC и OLE DB API метаданных представления, а не базовую таблицу или таблицы, при запросе метаданных в режиме обзора для запроса, ссылающегося на представление. Метаданные режима просмотра — это дополнительные метаданные, которые экземпляр ядра СУБД возвращает клиентским API-интерфейсам DB-Library, ODBC и OLE DB. Эти метаданные позволяют клиентским API-интерфейсам реализовывать обновляемые клиентские курсоры. Метаданные режима обзора содержат сведения о базовой таблице, которой принадлежат столбцы в результирующем наборе.

Для представлений, созданных с применением предложения VIEW_METADATA, метаданные режима обзора возвращают имя представления, а не имена базовых таблиц при описании столбцов из представления в результирующем наборе.

Когда представление создаётся с помощью WITH VIEW_METADATA, все его столбцы, кроме столбца временной метки , могут обновляться, если в представлении INSERT триггерируется или UPDATE ВМЕСТО OF. Для получения дополнительной информации см. раздел «Замечания» в CREATE VIEW (Transact-SQL).

AS
Действия, которые должны быть выполнены в представлении.

select_statement
Инструкция SELECT, которая определяет представление.

С ОПЦИЕЙ ЧЕКА
Обеспечивает соответствие всех выполняемых для представления инструкций, изменяющих данные, критериям, заданным в выражении select_statement.

Замечания

Для получения дополнительной информации о ALTER VIEW, см. Замечания в CREATE VIEW (Transact-SQL).

Примечание.

Если предыдущее определение представления было создано с помощью С ШИФРОВАНИЕМ или ОПЦИЕЙ ПРОВЕРКИ, эти опции включаются только в том случае, если они включены в ALTER VIEW.

Если в настоящее время используется представление, ALTER VIEWядро СУБД принимает монопольную блокировку схемы в представлении. Если блокировка предоставлена, и с представлением в настоящий момент не работает ни один пользователь, ядро СУБД удаляет все копии представления из кэша процедур. Существующие планы, ссылающиеся на представление, остаются в кэше, но при обращении к ним выполняется повторная компиляция.

ALTER VIEW может применяться к индексированных представлениям; ALTER VIEW однако безоговорочно удаляет все индексы в представлении.

Разрешения

Для выполнения ALTER VIEW, как минимум, требуется разрешение ALTER для ОБЪЕКТА.

Примеры

В следующем примере создается представление EmployeeHireDate, содержащее фамилии и имена всех сотрудников, а также даты их приема на работу. Представлению предоставляются необходимые разрешения, но требования изменяются таким образом, чтобы из базы данных извлекались сведения только о сотрудниках, принятых на работу до определенной даты. Для замены представления используется инструкция 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  

Представление нужно изменить так, чтобы оно включало только сотрудников, принятых на работу до 2002 года. Если ALTER VIEW функция не используется, а вместо этого просмотр отбрасывается и создаётся заново, ранее использованное GRANT оператор и любые другие операторы, связанные с разрешениями, относящимися к этому представлению, должны быть повторно введены.

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  

См. также

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Создание хранимой процедуры
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Внесение изменений в схемы баз данных публикации