我在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。 实际上我的问题是如果使用row_count,如果发生回滚,它会返回0?
答案 0 :(得分:2)
我最近遇到了类似的问题,但我设法通过选择事务块内部的行数然后在提交后返回它来解决它:
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
我不知道这是否是解决问题的最佳方式,但它似乎对我有用: - )