zoukankan      html  css  js  c++  java
  • 同一事务内,A表触发器能否访问B表的新增数据?

    在一个transaction内,会提交主表A与子表B。应用程序的代码应该是先向A表insert,再向B表insert(我用事件探测器观察到的,因为应用程序是别人开发的,我手头上没代码)。  
       
      现在我打算在A表加一触发器,用来把B表的一些字段的汇总数填写到A表中,此时,A表的触发器当然可以访问在A表的新增数据,但是否可以访问B表的新增数据(在B表的inserted区)呢?  
       
      当然我可以在B表的触发器中实现统计汇总回填表A的功能。但是,B表的触发器已经被加密了,我无法追加代码。

    1.
    A表触发器不能访问B表触发器中的数据(B表新增的数据)

    2.
    既然你是从B表新增数据汇总后,添加到A表,证明A/B表之间有关联.  
       
      你可以直接在B表创建一个触发器完成你的汇总统计工作(一个表可以有多个触发器,可以有多个insert,update,delete触发器)  
       
      所以你并不需要在原触发器基础上追加处理代码.
    3.
    多个触发器  
      SQL   Server   允许为每个数据修改事件(DELETE、INSERT   或   UPDATE)创建多个触发器。例如,如果对已有   UPDATE   触发器的表执行   CREATE   TRIGGER   FOR   UPDATE,则将创建另一个更新触发器。在早期版本中,在每个表上,每个数据修改事件(INSERT、UPDATE   或   DELETE)只允许有一个触发器。    
       
       
       
      说明     如果触发器名称不同,则   CREATE   TRIGGER(兼容级别为   70)的默认行为是在现有的触发器中添加其它触发器。如果触发器名称相同,则   SQL   Server   返回一条错误信息。但是,如果兼容级别等于或小于   65,则使用   CREATE   TRIGGER   语句创建的新触发器将替换同一类型的任何现有触发器,即使触发器名称不同。  
  • 相关阅读:
    PHP防盗链的基本思想&&防盗链的设置方法
    PHP程序员遇到职业问题时,是离职?还是坚持?
    如何学习Linux性能优化?
    PHP到底有多牛?你所知道的网站都在用它
    Linux 与 Unix 到底有什么不同?区别在哪?
    用PHP打造一个高性能好用的网站
    七夕-心形表白-简单css代码
    css雪碧图-css精灵图
    jquery-时间轴滑动
    js-进度条-动画
  • 原文地址:https://www.cnblogs.com/dadamoney/p/692297.html
Copyright © 2011-2022 走看看