我的理解是InnoDB现在是MySQL的默认引擎。有了这些知识,我就开始研究交易。

这是我到目前为止所拥有的...

try{
     $pdo->beginTransaction();
        $stmnt = $pdo->prepare ("delete from playing where uniq = :uniq");
        $stmnt->bindParam (':uniq',$uniq);
        $stmnt->execute();

        $stmnt = $pdo->prepare ("insert into removals (playdate, time, vid) values (:playdate, :time, :vid");
        $stmnt->bindParam (":playdate",$playdate);
        $stmnt->bindParam (":time", $time);
        $stmnt->bindParam (":vid", $vid);
        $stmnt->execute();

     $pdo->commit();

     echo "1"; // success
     return;
   }
   catch (PDOException $e){
      $pdo->rollback();
      echo $e->getMessage();
   }


jQuery调用它,结果为“ 1”表示成功。

如果我正确理解,如果bot语句成功执行,它们都会被“提交”,但是要么失败,就不会发生数据库活动,并且将生成一条错误消息,详细说明第一个失败的语句执行。

我真正的问题是,开始事务和提交应该位于try ... catch块之内还是之外。

谢谢,
-dmd-

最佳答案

为了便于阅读和清洁,是的,它应该放在try块中。但这并不重要。如果调用回滚,它仅声明要提交或回滚的内容。

10-06 14:19