Бөлісу құралы:


ALTER VIEW (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в 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 вне зависимости от источника базовых данных. Например, если в инструкции CREATE VIEW были предоставлены разрешения для столбца SalesOrderID, инструкция ALTER VIEW может переименовать этот столбец, например в 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, все столбцы, за исключением столбца с типом данных timestamp, поддерживают обновление, если представление включает триггеры INSERT или UPDATE INSTEAD OF. Дополнительные сведения см. в подразделе "Замечания" раздела CREATE VIEW (Transact-SQL).

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

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

WITH CHECK OPTION
Обеспечивает соответствие всех выполняемых для представления инструкций, изменяющих данные, критериям, заданным в выражении select_statement.

Замечания

Дополнительные сведения об ALTER VIEW см. в подразделе "Замечания" раздела CREATE VIEW (Transact-SQL).

Примечание.

Если предыдущее определение представления было создано с использованием предложения WITH ENCRYPTION или CHECK OPTION, эти параметры будут действовать только в том случае, если они включены в инструкцию 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)
Внесение изменений в схемы баз данных публикации