Поделиться через


ALTER VIEW (Transact-SQL)

Изменяет ранее созданное представление, в том числе индексированное. Инструкция ALTER VIEW не влияет на зависимые хранимые процедуры или триггеры и не изменяет разрешения. Дополнительные сведения о параметрах инструкции ALTER VIEW см. в разделе CREATE VIEW (Transact-SQL).

Значок ссылки на разделСинтаксические обозначения в 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 ]     
} 

Аргументы

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

    ms173846.note(ru-ru,SQL.90).gifВажно!
    Заданные для столбца разрешения сохраняются только в том случае, если после выполнения инструкции ALTER VIEW имя столбца остается таким же, каким оно было до этого.
    ms173846.note(ru-ru,SQL.90).gifПримечание.
    В столбцах представления разрешения для имени столбца применяются с инструкцией CREATE VIEW или ALTER VIEW вне зависимости от источника базовых данных. Например, если в инструкции CREATE VIEW были предоставлены разрешения для столбца SalesOrderID, инструкция ALTER VIEW может переименовать этот столбец, например в OrderRef, и все же иметь разрешения, связанные с представлением, в котором используется столбец SalesOrderID.
  • ENCRYPTION
    Если этот аргумент указан, выполняется шифрование элементов представления sys.syscomments, содержащего текст инструкции ALTER VIEW. Предложение WITH ENCRYPTION предотвращает публикацию представления при репликации SQL Server.
  • SCHEMABINDING
    Привязывает представление к схеме базовой таблицы или таблиц. Если аргумент SCHEMABINDING указан, изменить базовые таблицы таким образом, чтобы это повлияло на определение представления, нельзя. Для удаления зависимостей из таблицы, которую требуется изменить, вначале нужно изменить или удалить само представление. При применении параметра SCHEMABINDING имена таблиц, представлений или пользовательских функций, упоминаемые в аргументе select_statement, должны состоять из двух частей (schema**.**object). Все фигурирующие в выражении объекты должны относиться к одной базе данных.

    Представления или таблицы, входящие в представление, созданное при помощи предложения SCHEMABINDING, не могут быть удалены, пока это представление не будет удалено или изменено так, что больше не будет привязано к схеме. В противном случае Microsoft SQL Server 2005 Database Engine сообщит об ошибке. Кроме того, выполнение инструкций ALTER TABLE для таблиц, входящих в представления, связанные со схемами, завершается неудачей, если эти инструкции влияют на определение представления.

    Предложение SCHEMABINDING нельзя указывать, если представление содержит столбцы, имеющие тип-псевдоним.

  • VIEW_METADATA
    Определяет, что экземпляр SQL Server возвратит API-интерфейсам DB-Library, ODBC и OLE DB сведения о метаданных представления вместо базовой таблицы или таблиц, если запрашиваются метаданные режима просмотра для запроса, который ссылается на представление. Метаданные режима просмотра — это дополнительные метаданные, которые экземпляр компонента Database Engine возвращает клиентским 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).

ms173846.note(ru-ru,SQL.90).gifПримечание.
Если предыдущее определение представления было создано с использованием предложения WITH ENCRYPTION или CHECK OPTION, эти параметры будут действовать только в том случае, если они включены в инструкцию ALTER VIEW.

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

Инструкцию ALTER VIEW можно выполнять для индексированных представлений, однако она удаляет все индексы представления.

Разрешения

Для выполнения инструкции ALTER VIEW необходимо как минимум разрешение ALTER на объект.

Примеры

В следующем примере создается представление EmployeeHireDate, содержащее фамилии и имена всех сотрудников, а также даты их приема на работу. Представлению предоставляются необходимые разрешения, но требования изменяются таким образом, чтобы из базы данных извлекались сведения только о сотрудниках, принятых на работу до определенной даты. Для замены представления используется инструкция ALTER VIEW.

USE AdventureWorks ;
GO
CREATE VIEW HumanResources.EmployeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Contact AS c
ON e.ContactID = c.ContactID ;
GO

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

ALTER VIEW HumanResources.EmployeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE HireDate < CONVERT(DATETIME,'19980101',101) ;
GO

См. также

Справочник

CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)

Другие ресурсы

Создание хранимых процедур (компонент Database Engine)
Использование идентификаторов в качестве имен объектов
Внесение изменений схем в базы данных публикаций

Справка и поддержка

Получение помощи по SQL Server 2005