打印本文 打印本文 关闭窗口 关闭窗口
对MSsql Server的view使用instead of trigger进行视图更新
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2985  更新时间:2007/11/14 12:58:21  文章录入:mintao  责任编辑:mintao

       最近常常使用VIEW,但MSsql Server不允许对关联两个基表以上的VIEW进行更新操作。由于项目上的需要,花了一个晚上的时间研究了一下。抽点时间把过程和心得记录下来。

       先看看权威说法:

 

可更新视图:

Microsoft SQL Server 2000 以两种方法增强可更新视图的类别:

 

INSTEAD OF 触发器:可以在视图上创建 INSTEAD OF 触发器,以使视图可更新。执行 INSTEAD OF 触发器,而不是执行定义触发器的数据修改语句。该触发器使用户得以指定一套处理数据修改语句时需要执行的操作。因此,如果在给定的数据修改语句(INSERTUPDATE DELETE)上存在视图的 INSTEAD OF 触发器,则通过该语句可更新相应的视图。有关 INSTEAD OF 触发器的更多信息,请参见设计 INSTEAD OF 触发器。

 

分区视图:如果视图属于称为"分区视图"的指定格式,则该视图的可更新性受限于某些限制。本主题稍后将讨论分区视图及其可更新性。

必要时,SQL Server "本地分区视图"辨别为所有参与表和视图都在同一 SQL Server 上的视图,而将"分布式分区视图"辨别为视图中至少有一个表驻留在不同(远程)服务器上的视图。

 

如果视图没有 INSTEAD OF 触发器,或者视图不是分区视图,则视图只有满足下列条件才可更新:

 

select_statement 在选择列表中没有聚合函数,也不包含 TOPGROUP BYUNION(除非视图是本主题稍后要描述的分区视图)或 DISTINCT 子句。聚合函数可以用在 FROM 子句的子查询中,只要不修改函数返回的值。有关更多信息,请参见聚合函数。

 

select_statement 的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。

 

select_statement 中的 FROM

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口