SQL Server数据库 - 允许应用程序编辑视图中的记录?

时间:2010-06-22 00:35:49

标签: sql sql-server views updatable-views

我为一组三个表创建了一个自定义视图。如何配置视图以便应用程序可以像使用表一样编辑它?我正在使用SQL Server Studio Express。

2 个答案:

答案 0 :(得分:5)

SQL Server中的视图可以是updatable, but there are restrictions (CREATE VIEW, Updatable View section)

  • 任何修改(包括UPDATE,INSERT和DELETE语句)都必须仅引用一个基表中的列。
  • 视图中要修改的列必须直接引用表列中的基础数据。无法以任何其他方式派生列,例如通过以下方式:
    • 聚合函数:AVG,COUNT,SUM,MIN,MAX,GROUPING,STDEV,STDEVP,VAR和VARP。
    • 计算。无法从使用其他列的表达式计算列。通过使用集合运算符UNION,UNION ALL,CROSSJOIN,EXCEPT和INTERSECT形成的列相当于计算并且也不可更新。
  • 正在修改的列不受GROUP BY,HAVING或DISTINCT子句的影响。
  • TOP不会在视图的select_statement中的任何位置与WITH CHECK OPTION子句一起使用。

否则,您必须使用INSTEAD OF triggers

答案 1 :(得分:2)

您需要在视图上创建INSTEAD OF INSERT和INSTEAD OF UPDATE触发器,然后在触发器中编写insert和update语句来操作3个基础表中的数据。请参阅this MSDN article,其中包含一个简单示例。您可以在触发器定义的上下文中的特殊INSERTED表中找到所需的已编辑值。