mysql存储过程中控制事务引发的问题

yuqi508 2008-04-08 03:19:47

下面的语句在@1处,发生错误,为什么不能发生事务回滚?

main:BEGIN
DECLARE exit HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND
ROLLBACK;

START TRANSACTION;

INSERT INTO file_table(name,type,location)
VALUE(i_name,i_type,i_location);

--@1---
INSERT INTO log_table(LOGNAME, LOGMSG,USERID,LOGDATE)
VALUES('ff',null,i_userid,NOW());

COMMIT;

END main
...全文
249 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2008-04-09
  • 打赏
  • 举报
回复

main:BEGIN
DECLARE exit HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND
ROLLBACK;
declare i int;
set i = 0;
START TRANSACTION;

INSERT INTO file_table(name,type,location)
VALUE(i_name,i_type,i_location);
SAVEPOINT my_sa;
set i = 1;
--@1---
INSERT INTO log_table(LOGNAME, LOGMSG,USERID,LOGDATE)
VALUES('ff',null,i_userid,NOW());
set i = 2;
if i = 2 then
commit;
else if i = 1 then
rollback to savepoint my_sa;
release savepoint my_sa;
else
ROLLBACK;
end if;

END main
faisun 2008-04-08
  • 打赏
  • 举报
回复
在 @1 处增加判断影响的行数,若为 0 ,则回滚.
不会自动的

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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