El propósito de vincular el esquema a una vista es garantizar que las tablas base a las que se hace referencia en la vista no se puedan modificar de una manera que afecte la definición de la vista.
Esto normalmente es algo bueno. Después de todo, no quieres que alguien venga y deje caer una mesa de la que depende tu vista, ¿verdad?
Pero, ¿qué sucede si necesita realizar cambios en una o más tablas a las que hace referencia su vista?
En este caso, podría eliminar el enlace de esquema de una vista, realizar los cambios en las tablas base y luego volver a aplicar el enlace de esquema.
Hay dos formas de eliminar el enlace de esquema de una vista:
- Modifique la vista para que su definición ya no especifique el enlace de esquema.
- Descarte la vista (luego vuelva a crearla sin vinculación de esquema si es necesario).
Ejemplo de una vista vinculada a un esquema
Primero, aquí hay un ejemplo de una vista enlazada al esquema:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Sabemos que es una vista vinculada a un esquema porque contiene WITH SCHEMABINDING
en su definición. Para eliminar el enlace de esquema, todo lo que tenemos que hacer es eliminar ese bit.
Opción 1:modificar la vista
Para eliminar el enlace de esquema de esta vista modificándolo, podemos usar el siguiente código:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Todo lo que hicimos fue cambiar CREATE
para ALTER
y elimine WITH SCHEMABINDING
.
Opción 2:soltar la vista
Este es un ejemplo de eliminar la vista y luego volver a crearla sin vincular el esquema:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
En este caso, utilicé la sintaxis DROP IF EXISTS, que evita que se produzca un error en caso de que la vista no exista.