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;在程序调用的时候,就不会提示错误,直接回滚了,这样我就无法跟踪到错误了。。
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>