在MYSQL事务处理中,CALL PROCEDURE会造成自动COMMIT。。。???
有一存储过程,假设如下
CREATE DEFINER=`root`@`localhost` PROCEDURE `test1`(out p_sErrorMsg char(50))
BEGIN
 DECLARE m_iCount INT DEFAULT 0;
 DECLARE m_iCredit INT DEFAULT 0;
 DECLARE m_sTempStr char(30) default '';
 DECLARE m_sTempId char(30) default '';
 START TRANSACTION;
 delete  from account  where user_id = 1;
 call test2(@a);
 ROLLBACK;
END
而假设TEST2这个存储过程里面只有一条SELECT语句
这个时候ROLLBACK对于TEST1是无效的,在CALL TEST2的时候,delete  from account  where user_id = 1;就会被自动提交了,而在MYSQL官方手册中所提出的一个会造成隐性COMMIT的语句列表中并未包括CALL PROCEDURE。。。除非MYSQL 官方手册所列出之列表只是指在命令行操作的语句。。。。
唉,谁能帮忙确定一下呀。。。
 
      
最近评论