2010-10-05 32 views
12

Una pregunta sobre actualizables vistas DB: Estoy leyendo a través de algún tipo de documentación de MSDN sobre el tema, y ​​me encuentro con la siguiente restricción:vistas actualizables - SQL Server 2008

Cualquier modificación, incluyendo UPDATE, INSERT, y las instrucciones DELETE, deben hacer referencia a las columnas de una sola tabla base.

Solo quiero asegurarme de que entiendo la restricción. Me gustaría usar vistas en algunos de mis proyectos de revisión de medios. Los datos relacionales se extienden por todas las tablas, pero una vista parece ser la mejor manera de poder consolidar los datos que necesito de varias tablas (algunas de las cuales están vinculadas a través de claves externas) en una ubicación centralizada. Dado que las columnas provendrían de una variedad de tablas, ¿significa esto que no puedo ejecutar una manta INSERTAR o ACTUALIZAR para mantener los cambios en todas las columnas?

Respuesta

11

Sí eso es lo que significa. No veo ninguna ventaja para actualizar a través de una vista ya que, de todos modos, debes saber cuáles son las tablas base involucradas.

+0

Bueno, si quiero editar la información que es más fácil para rellenar los campos de formulario con los valores de la vista y guardarlos de nuevo de la misma manera. –

+0

Siempre que la vista contenga las columnas clave de la tabla subyacente o que permita que SQL Server identifique de manera única una fila en la tabla, actualizar directamente a través de una vista puede simplificar las cosas ahora, especialmente en situaciones donde una vista se asigna a una forma o una cuadrícula de datos. Esto me preocupó un poco al principio, pero dado que el usuario aún necesita derechos para actualizar la tabla de todos modos, no hay ningún riesgo adicional de seguridad. – SqlRyan

+2

Pero no funcionará si los campos actualizados son de diferentes tablas subyacentes. Es por eso que no es útil actualizar desde una vista. – HLGEM

12

Puede usar un disparador INSTEAD OF en una vista para mantener su aplicación solo tratando con la vista en lugar de la colección de tablas base a las que hace referencia la vista.

Aquí se muestra un ejemplo: Designing INSTEAD OF Triggers

Cuestiones relacionadas