【问题标题】:MYSQL PHP PDO order of statements in a transactionMYSQL PHP PDO 事务中语句的顺序
【发布时间】:2013-05-15 16:07:09
【问题描述】:

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

或者准备必须在事务中?还是他们必须在锁定之后?

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

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2015-11-15
      相关资源
      最近更新 更多