我正在使用$db->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
开始交易。这会锁定涉及交易的表吗?
如果是,那么当涉及同时用户时会发生什么(多个交易同时发生)。
PS:我不想锁定任何桌子。
答案 0 :(得分:1)
当您在表格中书写时,表格始终会被锁定。这是为了保存数据库。
该事务是保存数据库中更新数据的完整过程。这用于维护数据的完整性和关系。
例如:如果一个查询失败,则该过程可能会以“回滚”丢弃并返回初始状态。如果进程成功完成,则使用“commit”保留数据。
代码示例:
plot3D
答案 1 :(得分:0)
BEGIN TRANSACTION
上没有发生任何此类事件。它只是意味着:“开始记录我喜欢做的事情。”
当您执行COMMIT
时会执行所有这些操作,或者只有ROLLBACK
才会丢弃。
如果您在该事务中有数据更改查询,如INSERT
,UPDATE
或DELETE
,则表锁将在提交期间正常发出。一开始,引擎甚至不知道接下来要做什么,所以它实际上无法锁定任何东西。