Si actualizo una vista, se actualizarán mis tablas originales


Hipotéticamente tengo dos tablas de Empleados y Ubicaciones. Además, tengo una vista viewEmpLocation que se realiza uniendo Empleados y Ubicaciones.

Si actualizo la vista, ¿se actualizarán los datos de la tabla original?

Author: giannis christofakis, 2010-04-15

3 answers

Ver Usar vistas en Microsoft SQL Server

Al modificar datos a través de una vista (es decir, usando INSERTAR o ACTUALIZAR declaraciones) existen ciertas limitaciones dependiendo del tipo de vista. Vista que el acceso a varias tablas solo puede modifique una de las tablas de la vista. Vistas que utilizan funciones, especificar DISTINTO, o utilizar el GRUPO POR cláusula no puede ser actualizada. Además, insertar datos es prohibido para los siguientes tipos de vistas:

* views having columns with derived (i.e., computed) data in the SELECT-list  
* views that do not contain all columns defined as NOT NULL from the tables from which they were defined

También es posible insertar o actualizar datos a través de una vista tal que los datos ya no son accesibles a través de esa vista, a menos que el CON COMPROBAR Se ha especificado la opción.

 24
Author: KM.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-15 19:45:36

Sí.

Los datos "en" una vista no tiene existencia independiente de las tablas que componen la vista. La vista es, en esencia, una instrucción SELECT almacenada que se disfraza como una tabla. Los datos se almacenan en las tablas originales y sólo "montado" en la vista cuando quiera. Si la vista es actualizable (no todas las vistas lo son), las actualizaciones se aplican a los datos de la tabla.

 16
Author: Larry Lustig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-15 20:03:32

Podría usar un disparador en la vista para hacer un insert/update/delete a las tablas reales.

Http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1 /

 4
Author: Kyle J V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-15 20:58:50