はトランザクション中です。失敗するたびにロールバックする必要がありますか?コミットせずにスクリプトを終了するだけで十分ですか?
$transactionfailed = false;
$mysqliconn->query("begin;");
//query 1
$result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
if(!$result){$transactionfailed=true;}
//query 2
$result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
if(!$result){$transactionfailed=true;}
if($transactionfailed){$mysqliconn->query("rollback;");}
else{$mysqliconn->query("commit;");}
die();
は、私はそれを交換したい私はこのコードがあるとし、この1
$mysqliconn->query("begin;");
//query 1
$result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
if(!$result){die("error");}
//query 2
$result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
if(!$result){die("error");}
$mysqliconn->query("commit;");
die();
私は間違って何かがにmysqlデータベースに応じて、ロールバックまたはコミットせずに起こった場合、スクリプトを終了させたいですコミットしなかった場合はトランザクションをロールバックします。
私は何度も試してみましたが、コミットせずに終了するとトランザクションをロールバックします。 はこれはいつも安全ですか?。または私が見逃す何かがある。なぜなら私はquery2が失敗し、query1が1日後にコミットされることを望んでいないからです。
安全です。そうでなければ、結果は世界規模で非常に悲惨なものになるでしょう。 – apokryfos