ALTER VIEW (Transact-SQL)

Modifica una vista creada anteriormente. Esto incluye una vista indizada. ALTER VIEW no afecta a desencadenadores ni procedimientos almacenados dependientes y no cambia permisos. Para obtener más información acerca de los parámetros que se utilizan en la instrucción ALTER VIEW, vea CREATE VIEW (Transact-SQL).

Icono de vínculo a temas Convenciones de sintaxis de 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

Es el nombre del esquema al que pertenece la vista.

view_name

Es la vista que se va a cambiar.

column

Es el nombre de una o más columnas, separadas por comas, que van a formar parte de la vista especificada.

ms173846.note(es-es,SQL.90).gifImportante:
Los permisos de columna se mantienen sólo cuando las columnas tienen el mismo nombre antes y después de que se ejecute ALTER VIEW.

ms173846.note(es-es,SQL.90).gifNota:
En las columnas de la vista, los permisos de un nombre de columna se aplican a través de una instrucción CREATE VIEW o ALTER VIEW, independientemente del origen de los datos subyacentes. Por ejemplo, si se conceden permisos a la columna SalesOrderID en una instrucción CREATE VIEW, una instrucción ALTER VIEW puede cambiar el nombre de la columna SalesOrderID, por ejemplo, a OrderRef, y aún tener los permisos asociados con la vista utilizando SalesOrderID.

ENCRYPTION

Cifra las entradas en sys.syscomments que contienen el texto de la instrucción ALTER VIEW. WITH ENCRYPTION evita que la vista se publique como parte de la réplica de SQL Server.

SCHEMABINDING

Enlaza la vista al esquema de la tabla o las tablas subyacentes. Cuando se especifica SCHEMABINDING, las tablas base no se pueden modificar de forma que afecten a la definición de la vista. La propia definición de la vista debe modificarse o quitarse primero para eliminar las dependencias de la tabla que se va a modificar. Cuando se utiliza SCHEMABINDING, select_statement debe incluir los nombres de dos partes (schema.object) de las tablas, vistas o funciones definidas por el usuario a las que se hace referencia. Todos los objetos a los que se hace referencia deben estar en la misma base de datos.

Las vistas o las tablas que participan en una vista creada con la cláusula SCHEMABINDING no se pueden quitar a menos que se quite o cambie esa vista de forma que deje de tener un enlace de esquema. De lo contrario, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) de Microsoft genera un error. Además, se genera un error al ejecutar las instrucciones ALTER TABLE sobre tablas que participan en vistas que tienen enlaces de esquemas si estas instrucciones afectan a la definición de la vista.

SCHEMABINDING no se puede especificar si la vista contiene columnas de tipo de datos de alias.

VIEW_METADATA

Especifica que la instancia de SQL Server devolverá a las API de DB-Library, ODBC y OLE DB la información de metadatos sobre la vista, en vez de las tablas o tabla base, cuando se soliciten los metadatos del modo de exploración para una consulta que hace referencia a la vista. Los metadatos del modo de exploración son metadatos adicionales que la instancia del Database Engine (Motor de base de datos) devuelve a las API de DB-Library, ODBC y OLE DB de cliente. Estos metadatos permiten a las API de cliente implementar cursores de cliente actualizables. Los metadatos del modo de exploración incluyen información sobre la tabla base a la que pertenecen las columnas del conjunto de resultados.

Para las vistas creadas con VIEW_METADATA, los metadatos del modo de exploración devuelven el nombre de vista y no los nombres de la tabla base cuando se describen las columnas de la vista en el conjunto de resultados.

Cuando se crea una vista utilizando WITH VIEW_METADATA, todas sus columnas (excepto una columna timestamp) son actualizables si la vista tiene los desencadenadores INSERT o UPDATE INSTEAD OF. Para obtener más información, vea la sección Notas en CREATE VIEW (Transact-SQL).

AS

Son las acciones que va a llevar a cabo la vista.

select_statement

Es la instrucción SELECT que define la vista.

WITH CHECK OPTION

Fuerza que todas las instrucciones de modificación de datos que se ejecuten en la vista sigan los criterios establecidos en select_statement.

Para obtener más información acerca de ALTER VIEW, vea la sección Notas en CREATE VIEW (Transact-SQL).

ms173846.note(es-es,SQL.90).gifNota:
Si la anterior definición de vista se creó utilizando WITH ENCRYPTION o CHECK OPTION, estas opciones sólo se habilitan si se incluyen en ALTER VIEW.

Si una vista que está actualmente en uso se modifica mediante ALTER VIEW, el Database Engine (Motor de base de datos) impone un bloqueo exclusivo de esquema sobre la vista. Cuando se concede el bloqueo, y no hay usuarios activos de la vista, el Database Engine (Motor de base de datos) elimina todas las copias de la vista de la caché de procedimientos. Los planes existentes que hacen referencia a la vista permanecen en la caché, pero se vuelven a compilar cuando se llaman.

ALTER VIEW se puede aplicar a vistas indizadas; no obstante, quita incondicionalmente todos los índices de la vista.

Para ejecutar ALTER VIEW, como mínimo, se necesita el permiso ALTER en OBJECT.

En el siguiente ejemplo se crea una vista que contiene todos los empleados y sus fechas de contratación denominada EmployeeHireDate. Se conceden permisos sobre la vista, pero los requisitos se han cambiado para seleccionar los empleados que tienen fechas de contratación anteriores a una fecha determinada. A continuación, se utiliza ALTER VIEW para reemplazar la vista.

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

La vista debe cambiarse para que incluya sólo a los empleados que se contrataron antes de 1997. Si no se utiliza ALTER VIEW, sino que la vista se quita y se vuelve a crear, deben volver a crearse la instrucción GRANT utilizada anteriormente y cualquier otra instrucción relacionada con permisos pertenecientes a esta vista.

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

Adiciones de comunidad

AGREGAR
Mostrar: