2010-02-05 86 views
2

我有一个简单的更新将使用一个事务。如果事务失败,我想回滚并发出一个0的整数值。这是我的代码到目前为止。它不能正常工作,即使失败了,我也能得到整数1。mysql退出处理程序帮助

declare exit handler for not found rollback; 
declare exit handler for sqlwarning rollback; 
declare exit handler for sqlexception rollback; 
set row = 0; 

START TRANSACTION; 
UPDATE user 
SET name = name 
WHERE code = code; 
COMMIT; 

set row = 1; 

没有人有任何想法如何,我可以解决这个问题?真的,我在这里打开。如果有人有更好的方法,我全部耳朵。

回答

0

我不知道你是否只发布了错误的代码,但是你的查询没有产生任何错误,你用x覆盖x,其中y等于y,这是一个NOP

+0

感谢您的回答soulmerge。这是我正在使用的代码。有趣的事情..我使用这个相同的代码插入,它的作品完美。我查看了这段代码,并将其与工作代码进行了比较,结果没有任何区别。我很难过。 – James1012 2010-02-05 15:01:35

3

可以围成BEGIN和END命令:

DECLARE EXIT HANDLER FOR SQLEXCEPTION,NOT FOUND,SQLWARNING 
    BEGIN 
     ROLLBACK; 
     SELECT 0; 
    END; 
+0

对不起,格式化没有通过。 “BEGIN”与“回滚”,“选择0”是分开的行,和“结束”。 – Chosun 2010-08-18 20:09:20