La respuesta corta a eso es no. Si bien puede ingresar varias tablas en la from
cláusula de una declaración de actualización, solo puede especificar una sola tabla después de la update
palabra clave. Incluso si escribe una vista "actualizable" (que es simplemente una vista que sigue ciertas restricciones), las actualizaciones como esta fallarán. Aquí están los clips relevantes de la documentación de MSDN (el énfasis es mío).
ACTUALIZACIÓN (Transact-SQL)
La vista a la que hace referencia table_or_view_name debe ser actualizable y hacer referencia exactamente a una tabla base en la cláusula FROM de la vista. Para obtener más información sobre vistas actualizables, vea CREATE VIEW (Transact-SQL).
CREAR VISTA (Transact-SQL)
Puede modificar los datos de una tabla base subyacente a través de una vista, siempre que se cumplan las siguientes condiciones:
- Cualquier modificación, incluidas las declaraciones UPDATE, INSERT y DELETE, debe hacer referencia a columnas de una sola tabla base .
- Las columnas que se modifican en la vista deben hacer referencia directamente a los datos subyacentes en las columnas de la tabla. Las columnas no se pueden derivar de ninguna otra manera, como a través de lo siguiente:
- Una función agregada: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR y VARP.
- Un cómputo La columna no se puede calcular a partir de una expresión que usa otras columnas. Las columnas que se forman utilizando los operadores de conjunto UNION, UNION ALL, CROSSJOIN, EXCEPT e INTERSECT equivalen a un cálculo y tampoco son actualizables.
- Las columnas que se modifican no se ven afectadas por las cláusulas GROUP BY, HAVING o DISTINCT.
- TOP no se utiliza en ningún lugar de la selección select_statement de la vista junto con la cláusula WITH CHECK OPTION.
Sin embargo, con toda honestidad, debe considerar usar dos declaraciones SQL diferentes dentro de una transacción según el ejemplo de LBushkin.
ACTUALIZACIÓN: Mi afirmación original de que podía actualizar varias tablas en una vista actualizable era incorrecta. En SQL Server 2005 y 2012, generará el siguiente error. He corregido mi respuesta para reflejar esto.
Msg 4405, Level 16, State 1, Line 1
View or function 'updatable_view' is not updatable because the modification affects multiple base tables.