http://expert.csdn.net/Expert/TopicView1.asp?id=1675986 
全接触SQL异常与孤立事务!

解决方案 »

  1.   

    触发器当中是每有必要包含begin transaction之类的语句的。因为它们来就工作在事务中,一旦出错,事务回滚,一直滚到激活触发器的外部代码,所以触发器里边还要写事务时多余的。
      

  2.   

    令搂主遗憾了,游标我没有用过。至于exec,这么多年来我只在触发器中用过一次。我相信需要用exec的地方通常用客户端来动态生成查询语句更合适,而不是在触发器中,甚至不在存储过程中。
      

  3.   

    谢谢w_rose,使用exec是由于采用变量表名的原因,
    触发器如果不使用transaction,那么对于在该触发器中动态生成的表是没有清除的机会的马可提供的链接我去看过了,大力的文章显然没有经过深入思考,我会发文给他探讨,原因是他的文章中采用的 set... on直接退出触发器,后面的回滚事务还是没有调用!
    好在我昨天想到一个比较折中的方法,效率比上面的要好,容错做的也不错:-)
    其他热心的朋友也可以就“孤立事务导致的异常”发表自己的看法