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

SQL Server数据库-允许应用程序在视图中编辑记录?,sql,sql-server,views,updatable-views,Sql,Sql Server,Views,Updatable Views,我为一组三张表创建了一个自定义视图。如何配置视图,以便应用程序可以像使用表一样对其进行编辑?我正在使用SQL Server Studio Express。您需要在视图上创建INSERT而非INSERT和INSERT而非UPDATE触发器,然后在触发器中写入INSERT和UPDATE语句,以操作3个基础表中的数据。看,这有一个简单的例子。您将在触发器定义的上下文中的特殊插入表中找到所需的编辑值 您需要在视图上创建INSTEAD而不是INSERT和INSTEAD UPDATE触发器,然后在触发器中写

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

您需要在视图上创建INSERT而非INSERT和INSERT而非UPDATE触发器,然后在触发器中写入INSERT和UPDATE语句,以操作3个基础表中的数据。看,这有一个简单的例子。您将在触发器定义的上下文中的特殊插入表中找到所需的编辑值

您需要在视图上创建INSTEAD而不是INSERT和INSTEAD UPDATE触发器,然后在触发器中写入INSERT和UPDATE语句来操作3个基础表中的数据。看,这有一个简单的例子。您将在触发器定义的上下文中的特殊插入表中找到所需的编辑值

SQL Server中的视图可以是:

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

否则,您必须使用。

SQL Server中的视图可以是:

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