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