假设我有两个表Employee和Locations。另外我有一个viewEmpLocation视图,它是通过加入Employee和Locations来创建的。
如果我更新视图,原始表中的数据是否会更新?
答案 0 :(得分:24)
请参阅Using Views in Microsoft SQL Server
通过视图修改数据时 (即使用INSERT或UPDATE 声明)存在某些限制 取决于视图的类型。查看 只能访问多个表 修改视图中的一个表。 使用函数的视图,指定 DISTINCT,或使用GROUP BY 条款可能不会更新。 另外,插入数据是 禁止以下类型的 的观点:
* views having columns with derived (i.e., computed) data in the SELECT-list * views that do not contain all columns defined as NOT NULL from the tables from which they were defined
也可以插入或 通过视图更新数据 数据不再可通过 那视图,除非WITH WITH CHECK OPTION已被指定。
答案 1 :(得分:18)
是。
视图中的“数据”不存在独立于构成视图的表的存在。该视图本质上是一个存储的SELECT语句,伪装成一个表。数据存储在原始表中,只有在您想要查看时才“组装”到视图中。如果视图是可更新的(并非所有视图都是),则更新将应用于表数据。
答案 2 :(得分:4)
您可以在视图上使用触发器对实际表进行插入/更新/删除。
http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1/