SqlServer2008实例36视图之使用视图修改数据

  可以像普通表那样对视图进行插入、更新和删除操作一要实现这些操作,任何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)

返回错误:

  尝试下面的插入,这次仅引用在基础表中存在的列:

USE AdventureWorks
GO

INSERT Production.vw_Location
(LocationName,CostRate,Availability)
VALUES ('Finishing Cabinet',1.22,75.00)

    只要数据修改和视图满足要求,就可以对视图进行数据修改操作。如果视图不能满足这些要求,可以使用INSTEAD OF触发器来进行更新。
 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页