MYSQL事务回滚的问题

zuoxingyu 2009-11-13 11:03:05

CREATE PROCEDURE A()
BEGIN
DECLARE 'Constraint Violation'
CONDITION FOR sqlexception;
DECLARE EXIT HANDLER FOR
'Constraint Violation' ROLLBACK;
BEGIN TRANSACTION;
insert into A(vName) VALUES('a');
COMMIT;
end;


上面是我写的代码,调试不成功。。现在希望执行这个存储过程的时候,过程中间发生错误,提示错误,再回滚。

如果写成这样:

declare exit handler for sqlexception rollback;

在程序调用的时候,就不会提示错误,直接回滚了,这样我就无法跟踪到错误了。。
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2009-11-13
  • 打赏
  • 举报
回复
沙发自己坐,在线等。。
ACMAIN_CHM 2009-11-13
  • 打赏
  • 举报
回复
mysql> delimiter //
mysql>
mysql> CREATE PROCEDURE A()
-> BEGIN
-> declare exit handler for sqlexception select 'ERROR'; rollback;
->
-> insert into A(vName) VALUES('a');
-> COMMIT;
-> end;
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> call a()//
+-------+
| ERROR |
+-------+
| ERROR |
+-------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql>
zuoxingyu 2009-11-13
  • 打赏
  • 举报
回复
UP

56,677

社区成员

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

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