1

我在 MySQL 中使用 InnoDB 并使用 PDO 从 PHP 访问表。

我需要锁定表格,进行选择,然后根据结果插入一行或不插入。既然我想让桌子锁定尽可能短的时间,我可以这样做吗?

prepare select
prepare insert
begin transaction
lock table
execute select
if reservation time is available then execute insert
unlock table
commit

还是准备工作必须在交易中?还是他们必须在锁定之后?

事务应该只包括插入,还是有什么不同?

4

1 回答 1

1

beginTransaction关闭自动提交模式,因此它只影响实际提交更改的查询。这意味着准备好的语句,SELECT甚至LOCK TABLES完全不受事务的影响。事实上,如果你只做一次INSERT,甚至不需要使用事务;如果您想以原子方式执行多个写入查询,则只需要使用它们。

于 2013-05-21T01:29:48.670 回答