浏览 1578 次
锁定老帖子 主题:MYSQL5.0,存储过程事务问题求解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-23
也就是说,如何让A、B、C在同一个事务里面? 望高人求解。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-23
自己测试了一下。
B的语句如下: CREATE PROCEDURE prestashop.p_test_b( OUT out_sqlcode int) BEGIN -- START TRANSACTION; SET out_sqlcode = 0; INSERT INTO testupdate_will_be_deleted(id, name) VALUES(2,'B'); -- COMMIT; INSERT INTO testupdate_will_be_deleted(id, name) VALUES(2,'BB'); -- SET out_sqlcode = 9999; -- commit; END A是如下调用B的 CREATE PROCEDURE prestashop.p_test_a( OUT out_sqlcode int) main:BEGIN START TRANSACTION; CALL p_test_b(out_sqlcode); IF out_sqlcode > 0 THEN rollback; LEAVE main; END IF; -- CALL p_test_c(out_sqlcode); -- -- IF out_sqlcode > 0 THEN -- rollback; -- LEAVE main; -- END IF; COMMIT; END 运行结果是正常回滚,表[testupdate_will_be_deleted]里面没有数据被插入。 |
|
返回顶楼 | |