【发布时间】:2015-06-07 07:39:44
【问题描述】:
我注意到START TRANSACTION 自动COMMIT 之前的查询。由于这一点以及在整个事务结束之前调用了几个存储过程的事实,我需要检查我是否在START TRANSACTION 内。阅读手册后,我了解到START TRANSACTION 中的自动提交设置为 false,但看起来并非如此。我写了以下程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_transaction`()
BEGIN
show session variables like 'autocommit';
start transaction;
show session variables like 'autocommit';
COMMIT;
show session variables like 'autocommit';
END
但是每个show session variables like 'autocommit'; 都显示 autocommit=ON 而我预计第二个是 autocommit=OFF。
如何检查我是否在 START TRANSACTION 中?
我需要执行此检查,因为我有需要 START TRANSACTION 的程序 1,然后它调用也需要 START TRANSACTION 的程序 2。但是让我们假设我有第三个过程 different_procedure 也需要调用 procedure2 但在这种情况下 different_procedure 不使用START TRANSACTION。在这种情况下,我需要 procedure2 来检查 START TRANSACTION 是否已启动。我希望这已经足够清楚了。
【问题讨论】:
标签: mysql transactions autocommit