SQL Server - Delete from view

 
Vista:

Delete from view

Publicado por Anita (14 intervenciones) el 11/01/2008 15:18:24
Hola!
Por asuntos de permisologia solo permito INSERT, UPDATE y DELETE desde una vista en vez de la tabla directamente. El problema es que para el DELETE me da el siguiente error:
"La vista o función 'UserTable' no es actualizable porque la modificación afecta a múltiples tablas de base."
Lo cual es logico pues la vista se forma de un join de varias tablas. Sin embargo, necesito borrar filas de la vista y no de la tabla base segun recomendacion del paper de Microsoft: "Implementing Row- and Cell-Level Security in Classified Databases".
Como puedohacer el DELETE solo a partir de la vista sabiendo que se forma de varias tablas bases???

Gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Delete from view

Publicado por felipe (5 intervenciones) el 16/01/2008 20:18:39
pues haber.. las vistas como su nombre lo dicen son consultas sql pero de tablas usted no puede borrar datos de una vista ni hacer updates ni inserts ni nada solo son vistas jeje
mas facil pensa en hacer una tablita que se actualiza con la vista o algo asi por que como lo pensas no se puede hacer

cualquier inquietud hasmela saber
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Delete from view

Publicado por Anita (14 intervenciones) el 16/01/2008 22:02:55
Gracias por la respuesta felipe, sin embargo las inserciones y actualizaciones si se pueden hacer sobre las vistas, todo depende del origen del view, si es la réplica de una tabla base (sin joins, únicamente una sola tabla) el manejador inserta o actualiza desde la vista a la tabla original, tal como en el caso de un trigger. El asunto con el delete es que si la vista esta compuesta por varias tablas bases la operación de eliminación afectaría varias tablas y no hay control del cómo hacerlo. Por esa razón el mismo manejador me restringe la operación que quisiera hacer.
La solución que hallé: para no dar permiso sobre las tablas bases (por cuestiones de seguridad que es el móvil de todo el asunto) decidí crear un store procedure que si ejecute sobre las tablas bases, sin embargo, el usuario permanecería sin permisos sobre la tabla y únicamente con acceso al stored procedure, de esta forma agrego un nivel más de seguridad.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Delete from view

Publicado por Isaias (3308 intervenciones) el 21/01/2008 19:46:06
No se puede hacer DELETE a una vista que hace menciona diferentes tablas que la conforman.

Tal vez deberias implementar una UDF (Funcion de usuario) o STORE PROCEDURE que reciba los parametros necesarios y haga los DELETE's correspondientes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar