在存储过程中执行多表操作应注意什么?

msw120 2008-11-04 03:37:32
我想在一个存储过程中进行多张表的插入操作,但又怕其中之一的表突然插入不成功,就会出错。就我所知这种情况下最好用事务处理,用事务回滚来解决。请问各位高手你们在处理这种情况下,应该怎么写保险点的多表插入的存储过程呢,谢谢
...全文
62 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liyingyue_FFS 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hdhai9451 的回复:]
当然用事务了
begin tran
.........
if @@error <>0 goto err
commit tran
return

err:
rollback tran

go

事务要么成功执行,要么什么都不执行
[/Quote]

搭车提问

begin tran 
insert into table1 --insert1
if @@error <>0 goto err
commit tran
insert into table2 --insert2
if @@error <>0 goto err
commit tran
insert into table4 --insert4
if @@error <>0 goto err
commit tran
return

err:
rollback tran

go


如上面代码,如果是insert2那里出了错误,回滚会回滚到哪里?
  • 打赏
  • 举报
回复
首先保证你数据的正确性,另外注意下要插入数据的这些表之间的关系。例如:先向没有外键的表插入数据,然后再向有外键的表插入数据。还有保证外键数据的正确性(注意下参照完整性)
Andy__Huang 2008-11-04
  • 打赏
  • 举报
回复
当然用事务了
begin tran
.........
if @@error<>0 goto err
commit tran
return

err:
rollback tran

go

事务要么成功执行,要么什么都不执行

hyde100 2008-11-04
  • 打赏
  • 举报
回复
当然用事务,还有在代码里做些必要的检查再更新,减少出错概率
Liyingyue_FFS 2008-11-04
  • 打赏
  • 举报
回复
mark

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧