我的理解是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块中。但这并不重要。如果调用回滚,它仅声明要提交或回滚的内容。