【问题标题】:Execute Stored Procedure with Transaction inside MySQLWorkbench alway commit automatically?在 MySQLWorkbench 中使用事务执行存储过程总是自动提交?
【发布时间】:2015-10-11 06:46:29
【问题描述】:

我有这个 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

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

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

请帮我解释一下这个问题,我不明白在 Workbench 中调用 STP 和其他客户端调用 STP 有什么区别。

谢谢。

【问题讨论】:

    标签: mysql transactions mysql-workbench autocommit


    【解决方案1】:

    不同之处在于,当您在 mysql 工作台中再次查询该表时,您是在同一个会话中。即使您的更改尚未提交,即使您的更改未提交,您仍然可以看到它们,因为允许同一个客户端会话查看未提交的更改。

    但是,如果您启动 mysql 工作台或 mysql shell 的新会话,您将看不到通过现有工作台会话所做的更改。

    【讨论】:

    • 你救了我的命,非常感谢。我花了一整天的时间来调查这个问题:(
    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多