Pregunta

¿Por qué tengo que escribir 'actualizar' scripts, y ejecutar cada vez que puedo añadir o editar algunos campos a la vista?

SQL Server entiende que necesita para actualizar la vista cuando la edición en la fantasía de vista de edición de windows en Management Studio, así que ¿por qué no puede simplemente decirle a su vista para ir de actualización de sí mismo después de la edición de la vista a través de una secuencia de comandos?

¿Fue útil?

Solución

Vistas necesitan ser renovados si las tablas subyacentes cambian en absoluto. Eso puede cambiar los tipos de datos de columnas de la vista o reorganizar sus índices. Por lo tanto, lo que necesita saber. De lo contrario, usted ejecuta una consulta en ella, y volaría con bastante rapidez.

No debería tener que ejecutar sp_refreshview para alterar una vista. Sólo para alterar sus tablas subyacentes.

También, por favor, no burlarse de bola de la diversión feliz.

Editar: acaba de ejecutar este código (en la serie) para intentar reproducir el problema. Yo era, por desgracia, no puede hacerlo, ya que trabajó como se esperaba (SQL Server 2008):

create view MyView
as
select ProductKey, ProductID, ProductName, Price
from dbo.Products

select v.* from MyView v

alter view MyView
as
select ProductKey, ProductID, ProductName, Price*100 as MyPrice
from dbo. Products

select v.* from MyView v

Otros consejos

Uso CON SCHEMABINDING en la definición de la vista para eliminar la necesidad de cualquier actualiza

Y en combinación con el ALTER punto de VISTA, no el diseñador

Edición, Julio de 2012, desde el enlace de arriba.Mi negrita

SCHEMABINDING

Se une a la vista el esquema de la tabla o las tablas subyacentes.Cuando se especifica SCHEMABINDING, la base de la tabla o tablas no puede ser modificado en una forma que afecte a la definición de la vista.La propia definición de la vista primero se debe modificar o quitar para quitar las dependencias en la tabla que se va a modificar.Cuando se utiliza SCHEMABINDING, select_statement debe incluir los nombres de dos partes (esquema.objeto) de las tablas, vistas o funciones definidas por el usuario que se hace referencia.Todos los objetos que se hace referencia debe estar en la misma base de datos.

Vistas o tablas que participan en una vista creada con la cláusula SCHEMABINDING no se puede quitar a menos que la vista se ha caído o se ha cambiado de modo que ya no tiene enlace de esquema.De lo contrario, el Motor de Base de datos genera un error.Además, la ejecución de Las instrucciones ALTER TABLE en las tablas que participan en las vistas que tienen un enlace de esquema fallar cuando estas instrucciones afectan a la definición de la vista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top