sqlserver视图的触发器

在基表中吗,常用的触发器为:After触发器,但是这个触发器不能在基表中使用,所以要替换为 Instead Of触发器

Instead Of触发器可以同时在数据表和视图中使用,通常在以下几种情况下,建议使用Instead Of触发器:

1.数据库里的数据禁止修改:例如电信部门的通话记录是不能修改的,一旦修改,则通话费用的计数将不正确。在这个时候,就可以用Instead Of触发器来跳过Update修改记录的SQL语句。

2.有可能要回滚修改的SQL语句:用After触发器并不是一个最好的方法,如果用Instead Of触发器,在判断折扣大于0.6时,就中止了更新操作,避免在修改数据之后再回滚操作,减少服务器负担。

3.在视图中使用触发器:因为After触发器不能在视图中使用,如果想在视图中使用触发器,就只能用Instead Of触发器。

4.用自己的方式去修改数据:如不满意SQL直接的修改数据的方式,可用Instead Of触发器来控制数据的修改方式和流程。

但是注意:

这只会捕获直接对视图的INSERT操作

不会捕获通过修改基表导致视图内容变化的情况

 

如果你也和我一样,B数据库需要同步A数据库的数据,但是不能在A数据库的基表建触发器

那么,请看下一篇:

使用SQL Server代理作业定期同步

当然,还有其他办法:

2.使用变更数据捕获(CDC)或变更跟踪---这需要A数据库启用CDC

3.使用Linked Server和B数据库的触发器

4.使用SQL Server复制功能(

  1.配置A数据库的发布功能
  2.将视图作为文章发布
  3.在B数据库订阅该发布
)

 

 

posted @ 2025-03-30 13:25  suN(小硕)  阅读(13)  评论(0)    收藏  举报