UNION-ed VIEWs
基於 UNION 或 UNION ALL 操作的 VIEW 是隻讀的,因為沒有一種方法可以將更改對映到其中一個基表中的一行。UNION 運算子將從結果中刪除重複的行。UNION 和 UNION ALL 運算子都隱藏了行來自哪個表。這樣的 VIEW 必須使用 a,因為 UNION [ALL]中的列沒有自己的名稱。理論上,兩個不相交的表的 UNION 應該是可更新的,這兩個表都沒有重複的行。
https://www.simple-talk.com/sql/t-sql-programming/sql-view-beyond-the-basics/
CREATE VIEW DepTally2 (emp_nbr, dependent_cnt)
AS (SELECT emp_nbr, COUNT(*)
FROM Dependents
GROUP BY emp_nbr)
UNION
(SELECT emp_nbr, 0
FROM Personnel AS P2
WHERE NOT EXISTS
(SELECT *
FROM Dependents AS D2
WHERE D2.emp_nbr = P2.emp_nbr));