2

我在mysql中有一个存储过程,如下所示:

BEGIN
START TRANSACTION;  
    INSERT INTO tbl1 (v1,v2) VALUES (p1,p2);
    UPDATE tbl2 SET s1 = 1 WHERE s2 = s3;
    SELECT ROW_COUNT();
COMMIT
END

在这个查询中,即使事务没有提交,row_count 也将是 1。事实上我的问题是,如果发生回滚,我如何使用它返回 0 的 row_count?

4

1 回答 1

3

我最近遇到了类似的问题,但我设法通过选择事务块内的行数并在提交后返回它来解决它:

BEGIN
START TRANSACTION;  
    INSERT INTO tbl1 (v1,v2) VALUES (p1,p2);
    UPDATE tbl2 SET s1 = 1 WHERE s2 = s3;
    SET @rowCount = (SELECT ROW_COUNT());
COMMIT
SELECT @rowCount;
END

我不知道这是否是解决它的最佳方法,但它似乎对我有用:-)

于 2013-03-26T10:16:53.800 回答