本文介绍了mysql事务错误处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
BEGIN
ROLLBACK;
END;
START TRANSACTION;
UPDATE tbl_order SET TransactionID="abc" WHERE OrderID=1;
UPDATE tbl_order SET TransactionID="xyz" WHERE OrderID=;
UPDATE tbl_order SET TransactionID="zzz" WHERE OrderID=13;
COMMIT;
由于某种原因,订单1和13被填充而没有回滚,并且我得到出口hadler的语法错误.
for some reason order 1 and 13 are filled without rollback and i get syntax error for the exit hadler.
Query: DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND BEGIN ROLLBACK
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
BEGIN
ROLLBACK' at line 1
有人可以帮我弄清楚我在做什么错吗?
can someone help me figure out what i'm doing wrong?
预先感谢
编辑
更新tbl_order SET TransactionID ="xyz" WHERE OrderID =;
是故意的
推荐答案
我认为出口处理程序只能在存储过程中使用.该文档没有明确说明这一点,但暗示了
I believe exit handlers can only be used in stored procedures. The documentation doesn't explicitly state this, but alludes to
http://dev.mysql.com/doc/refman/5.1/en/condition-handling.html
这篇关于mysql事务错误处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!