Jawaban singkatnya adalah tidak. Meskipun Anda dapat memasukkan beberapa tabel dalam from
klausa pernyataan pembaruan, Anda hanya dapat menentukan satu tabel setelah update
kata kunci. Bahkan jika Anda menulis tampilan "yang dapat diupdate" (yang hanyalah tampilan yang mengikuti batasan tertentu), pembaruan seperti ini akan gagal. Berikut adalah klip yang relevan dari dokumentasi MSDN (penekanan ada pada saya).
UPDATE (Transact-SQL)
Tampilan yang dirujuk oleh table_or_view_name harus dapat diupdate dan merujuk tepat satu tabel dasar dalam klausa FROM dari view. Untuk informasi lebih lanjut tentang tampilan yang dapat diupdate, lihat CREATE VIEW (Transact-SQL).
BUAT LIHAT (Transact-SQL)
Anda bisa memodifikasi data tabel dasar yang mendasari melalui tampilan, selama kondisi berikut ini benar:
- Setiap modifikasi, termasuk pernyataan UPDATE, INSERT, dan DELETE, harus merujuk kolom hanya dari satu tabel dasar .
- Kolom yang sedang diubah dalam tampilan harus secara langsung merujuk data yang mendasarinya di kolom tabel. Kolom tidak dapat diturunkan dengan cara lain, seperti melalui yang berikut:
- Fungsi agregat: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR, dan VARP.
- Suatu perhitungan. Kolom tidak dapat dihitung dari ekspresi yang menggunakan kolom lain. Kolom yang dibentuk dengan menggunakan operator UNION, UNION ALL, CROSSJOIN, EXCEPT, dan INTERSECT berjumlah dalam perhitungan dan juga tidak dapat diperbarui.
- Kolom yang sedang dimodifikasi tidak terpengaruh oleh klausa GROUP BY, HAVING, atau DISTINCT.
- TOP tidak digunakan di mana pun dalam pernyataan select_statement bersama dengan klausa WITH CHECK OPTION.
Namun, dalam semua kejujuran, Anda harus mempertimbangkan untuk menggunakan dua pernyataan SQL yang berbeda dalam suatu transaksi sesuai dengan contoh LBushkin.
UPDATE: Pernyataan asli saya bahwa Anda dapat memperbarui beberapa tabel dalam tampilan yang dapat diupdate salah. Pada SQL Server 2005 & 2012, itu akan menghasilkan kesalahan berikut. Saya telah mengoreksi jawaban saya untuk mencerminkan hal ini.
Msg 4405, Level 16, State 1, Line 1
View or function 'updatable_view' is not updatable because the modification affects multiple base tables.