在 MySQLWorkbench 中使用事务执行存储过程总是自动提交?

Execute Stored Procedure with Transaction inside MySQLWorkbench alway commit automatically?

我有这个 STP:

CREATE DEFINER=`user1`@`%` PROCEDURE `test`(
    OUT result TINYINT
)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
        BEGIN
            SET result = -1;
            ROLLBACK;
        END;

    START TRANSACTION;
        INSERT INTO testtable (field1, field2) VALUES (11, 22);
        SET result = 1;
END

我在MySQL里面执行后Workbench (6.3 64b), testtable 有新的记录。我虽然不能提交数据,因为没有提交语句。

然后我尝试通过 C# 客户端再次调用该 STP,这次没有提交新数据。

请帮我解释一下这个问题,我不明白在Workbench内部调用STP和通过另一个客户端调用STP有什么不同。

谢谢。

不同之处在于,当您在 mysql workbench 中再次查询 table 时,您处于同一个会话中。 Even though your changes have not been committed, even though your changes are not committed you still can see them because the same client session is allowed to see uncommitted changes.

但是,如果您启动 mysql workbench 或 mysql shell 的新会话,您将看不到通过现有 workbench届会.