在提交事务之前,对该事务中使用的表的查询会发生什么?

时间:2011-06-15 13:50:18

标签: mysql transactions

我遇到需要锁定2个表的情况,直到单独对这2个表进行某些操作。为此,我选择了“交易”。 因此,在“START TRANSACTION”和“COMMIT”之间..如果有人试图插入这些表,那些查询会发生什么?它们会被保留在队列中并在事务完成后执行吗? 理想情况下,我的要求是什么......在我的交易被提交之前,它们不应该被插入。

请有人告诉我这个场景。

提前致谢! SuryaPavan

2 个答案:

答案 0 :(得分:1)

当交易启动时,它与世界其他地方隔离开来。这就是ACID中的我。

在交易期间,如果有人试图插入任何内容 - 插入将会发生,但它不会以任何方式破坏您正在执行的事务。同样的规则适用于另一个方向。

如果您要求在整个表格中锁定整个表格直到您的交易成功 - 这就像是一个糟糕的设计,你应该重新考虑一下你所做的事情是否真的最佳。

答案 1 :(得分:0)

如果在您的交易提交之前(即在交易过程中)插入了它们,那将使交易相当无用。

我假设您正在使用mysql(因为您的问题被标记了)...为什么不打开两个命令行会话到您的数据库并尝试它看看会发生什么?与发布问题和等待答案相比,这将花费更少的时间,并且您可能会在此过程中了解更多信息。