锁定事务中的表

时间:2011-05-17 13:00:14

标签: mysql transactions locking

我希望能够锁定整个表以防止“beginTransaction”和结束“commit”或“rollback”之间的任何INSERT或UPDATE。

我知道开始一个事务导致一个隐式的UNLOCK TABLES,一个LOCK表导致一个隐含的COMMIT ......所以有什么方法可以做我想要的吗?

3 个答案:

答案 0 :(得分:2)

为什么呢?也许你已经错过了交易点。

如果您在交易过程中使用可重复读取事务隔离,插入,更新等,但您将无法查看。因此,就您的流程而言,表 已锁定以进行插入/更新。除了它们仍在发生之外,它们仍然可以耐受光盘,其他过程可以继续。

完成第一次“选择”后,会创建一个快照,您正在有效地阅读该快照,而不是最新版本。如果这是你想要的,可重复阅读对你有用。

答案 1 :(得分:1)

select count(*) from table  

在事务中,将表锁定在ms SQL 2000上

答案 2 :(得分:-1)

如果你正在使用PHP,那么当有事务发生时,你可以设置一个SESSION变量来告诉脚本不要对数据库做任何事情,即$_SESSION['on_going_transaction'] = true

当事务完成时,只需销毁SESSION变量,以便可以发生另一个事务。这更容易。