MYSQL PHP PDO事务中语句的顺序

时间:2013-05-21 01:24:34

标签: php mysql pdo

我在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

或者准备工作必须在交易中吗?或者他们必须在锁定之后?

交易是否应仅包含插入内容,还是会产生任何差异?

1 个答案:

答案 0 :(得分:1)

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