问题描述:
      我在自己的程序中写了一条对表A更新(Update)的SQL操作语句。同时我也在数据库中对表A写了一个Updated触发器。
      这样在程序运行时执行了更新语句后,触发了数据库中的触发器执行。
请问:程序执行的更新语句和触发器的执行是不是属于同一个事务? 
         谢谢!

解决方案 »

  1.   

    程序中更新语句只更新了一条语句,而在触发器中要更新四条数据。为什么程序中取得的SQL执行后影响行数却是4呢?
      

  2.   

    看你所说,你应该是FOR OR AFTER 触发器,
    不是同一个事务,你更新完成后,触发器错误也不会回滚你的更新了,不过你可以控制
    你程序返回的应该是最后受影响的行数
      

  3.   

    1.触发器常常用于强制业务规则和数据完整性, 默认触发触发器的语句和触发器中的语句都是在一个事务里的,这个都保证不了,谈何维护数据的一致性。除非,在触发器中显式的提交或回滚事务。create trigger ....
    as
    commit tran / rollback tran
    insert ....2.触发器中可能会涉及到嵌套事务应用,但是无论怎么变化基本的原理是不变的。
      

  4.   

    这个 触发器里面的语句和本身的语句会在一个事务中。
    举一个例子: 在触发器中 rollback的话,会把本身的语句一起rollback的而不是只回滚触发器里的语句的