A resposta curta para isso é não. Embora você possa inserir várias tabelas na from
cláusula de uma instrução de atualização, você pode especificar apenas uma única tabela após a update
palavra - chave. Mesmo se você escrever uma visão "atualizável" (que é simplesmente uma visão que segue certas restrições), atualizações como essa falharão. Aqui estão os clipes relevantes da documentação do MSDN (a ênfase é minha).
ATUALIZAÇÃO (Transact-SQL)
A visualização referenciada por table_or_view_name deve ser atualizável e referenciar exatamente uma tabela base na cláusula FROM da visualização. Para obter mais informações sobre visualizações atualizáveis, consulte CREATE VIEW (Transact-SQL).
CRIAR VISTA (Transact-SQL)
Você pode modificar os dados de uma tabela base subjacente por meio de uma exibição, desde que as seguintes condições sejam verdadeiras:
- Quaisquer modificações, incluindo as instruções UPDATE, INSERT e DELETE, devem fazer referência a colunas de apenas uma tabela base .
- As colunas que estão sendo modificadas na visualização devem fazer referência direta aos dados subjacentes nas colunas da tabela. As colunas não podem ser derivadas de nenhuma outra maneira, como por exemplo:
- Uma função agregada: AVG, COUNT, SUM, MIN, MAX, GROUPING, DESVPAD, DESVPADP, VAR e VARP.
- Uma computação. A coluna não pode ser calculada a partir de uma expressão que usa outras colunas. As colunas formadas usando os operadores de conjunto UNION, UNION ALL, CROSSJOIN, EXCEPT e INTERSECT somam um cálculo e também não são atualizáveis.
- As colunas que estão sendo modificadas não são afetadas pelas cláusulas GROUP BY, HAVING ou DISTINCT.
- TOP não é usado em nenhum lugar da declaração select_ da exibição junto com a cláusula WITH CHECK OPTION.
Com toda a honestidade, porém, você deve considerar o uso de duas instruções SQL diferentes em uma transação, conforme o exemplo de LBushkin.
ATUALIZAÇÃO: Minha afirmação original de que era possível atualizar várias tabelas em uma exibição atualizável estava errada. No SQL Server 2005 e 2012, ele gerará o seguinte erro. Corrigi minha resposta para refletir isso.
Msg 4405, Level 16, State 1, Line 1
View or function 'updatable_view' is not updatable because the modification affects multiple base tables.