可以像普通表那样对视图进行插入、更新和删除操作一要实现这些操作,任何INSERT,UPDATE,DELETE操作只能引用一个表中的列。而且,INSERT,UPDATE,DELETE中引用的列不能进行衍生——例如,它们不能基于聚合函数被计算或受GROUP BY、DISTINCT或HAVING子句的影响。
作为真实情况的最佳实践,只有当基础数据表必须对查询编写者不可见的时候,才应该使用视图更新。例如,如果你正在编写允许用户直接更新数据的套装软件应用程序,那么就能通过提供视图来过滤查看的基础列或提供比基础表中使用的更友好的列名。
例如,创建一个从Production.Location表查询的视图。在查询定义中还使用了计算列:
USE AdventureWorks
GO
CREATE VIEW Production.vw_Location
AS
SELECT LocationID,Name LocationName,CostRate,Availability,
CostRate/Availability CostToAvailabilityRatio
FROM Production.Location
Go
尝试使用下面的插入:
USE AdventureWorks
GO
INSERT Production.vw_Location
(LocationName,CostRate,Availability,CostToAvailabilityRatio)
VALUES ('Finishing Cabinet',1.22,75.00,0.01626)
返回错误: