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));