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

问题描述:

我为一组三个表定制了一个视图。我如何配置视图以便可以通过应用程序使用它像表格一样进行编辑?我正在使用SQL Server Studio Express。SQL Server数据库 - 允许应用程序编辑视图中的记录吗?

您需要在视图上创建INSTEAD OF INSERT和INSTEAD OF UPDATE触发器,然后在触发器中编写插入和更新语句以操纵3个基础表中的数据。见this MSDN article有一个简单的例子。您可以在触发器定义的上下文中的特殊INSERTED表中找到所需的编辑值。

查看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