首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

难!触发器中能回滚部分事务吗?解决办法

2012-03-31 
难!!!触发器中能回滚部分事务吗?我在A表定义了一个Insert触发器,要求如下:如果有数据插入A表,解析插入的纪

难!!!触发器中能回滚部分事务吗?
我在A表定义了一个Insert触发器,要求如下:
如果有数据插入A表,解析插入的纪录,然后依次更新B表、C表、D表(总之逻辑比较复杂)
我定义了一个事务,如果更新B表、C表、D表时有一处出错,就在Catch   语句中回滚事务

不幸的是:插入A表的那条纪录也被   Rollback了,而我需要保留这条数据!

请高人指点!谢谢先

PS:我调查过,触发器为一隐式事务,那么说如果我要保留A表插入的数据就不能使用   Rollback了吗?不使用的话我又如何保证B、C、D表的同时提交?

[解决办法]
Begin Tran
Insert Into A Select ......
Save Tran Save_Point
Update B ...
Update C ...
Update D ...
if @@Error <> 0
Begin
  RollBack Tran Save_Point 
Print '更新失败 '
End
Else
Commit Tran

热点排行