MySQL - PHP事务和表锁

时间:2017-07-16 10:41:05

标签: php mysql mysqli transactions

我正在使用$db->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);开始交易。这会锁定涉及交易的表吗?

如果是,那么当涉及同时用户时会发生什么(多个交易同时发生)。

PS:我不想锁定任何桌子。

2 个答案:

答案 0 :(得分:1)

当您在表格中书写时,表格始终会被锁定。这是为了保存数据库。

该事务是保存数据库中更新数据的完整过程。这用于维护数据的完整性和关系。

例如:如果一个查询失败,则该过程可能会以“回滚”丢弃并返回初始状态。如果进程成功完成,则使用“commit”保留数据。

代码示例:

plot3D

答案 1 :(得分:0)

BEGIN TRANSACTION上没有发生任何此类事件。它只是意味着:“开始记录我喜欢做的事情。”

当您执行COMMIT时会执行所有这些操作,或者只有ROLLBACK才会丢弃。

如果您在该事务中有数据更改查询,如INSERTUPDATEDELETE,则表锁将在提交期间正常发出。一开始,引擎甚至不知道接下来要做什么,所以它实际上无法锁定任何东西。