在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 官方手册所列出之列表只是指在命令行操作的语句。。。。
唉,谁能帮忙确定一下呀。。。
最近评论