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

本文介绍了如何在Sql Server 2008中对视图进行插入、更新和删除操作。虽然可以直接修改视图,但最佳实践建议只在基础表需要隐藏或提供友好列名时使用此功能。举例说明了视图更新的限制,如不能包含聚合函数或GROUP BY子句,并展示了正确和错误的插入示例。当视图不满足修改条件时,可以考虑使用INSTEAD OF触发器。
摘要由CSDN通过智能技术生成

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

返回错误:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值