在存储过程里如何保持事务的一致性,请帮忙看看

[复制链接]
查看11 | 回复3 | 2010-3-1 11:07:22 | 显示全部楼层 |阅读模式
for cv in cur_bad loop
begin
delete from aa where id=cv.id;
delete from bb where id=cv.id;
update cc set flag_q=0,flag_lock=0 where id=cv.id;
end;
end loop;
commit;
操作aa.bb.cc表当中,任何一步出错,将回滚到初始状态,如何写?
exception
  when ??????
回复

使用道具 举报

千问 | 2010-3-1 11:07:22 | 显示全部楼层
delete from aa where id=cv.id;
if sql%notfound then
rollback;
exit;
end if;
回复

使用道具 举报

千问 | 2010-3-1 11:07:22 | 显示全部楼层
exception
where others then
rollback;
足已
回复

使用道具 举报

千问 | 2010-3-1 11:07:22 | 显示全部楼层
最初由 wzg7711 发布
[B]for cv in cur_bad loop
begin
delete from aa where id=cv.id;
delete from bb where id=cv.id;
update cc set flag_q=0,flag_lock=0 where id=cv.id;
end;
end loop;
commit;
操作aa.bb.cc表当中,任何一步出错,将回滚到初始状态,如何写?
exception
  when ?????? [/B]

不明白你的意思。
begin
delete from aa where id=cv.id;
delete from bb where id=cv.id;
update cc set flag_q=0,flag_lock=0 where id=cv.id;
end;
其中任何一条语句出错,系统都将ROLLBACK到BEGIN之前。系统将BEGIN。。。END之间的语句作为一条语句处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行