4

「LOCK TABLES」を実行するとき、呼び出しを try/catch でラップして、例外が発生した場合にテーブルがロック解除されるようにするのが賢明ですか?

4

1 に答える 1

2

一般にtry { } catch、エラーが発生した場合に前の操作を元に戻す必要がある操作に使用することをお勧めします。データベースステートメントだけに限定されません。

とはいえ、データベースを使用する場合は、InnoDB などのトランザクション データベースに付属するような、よりきめ細かいロック メカニズムを使用することをお勧めします。引き続き を使用try { } catchしますが、次のようにします。

// start a new transaction
$db->beginTransaction();
try {
    // do stuff
    // make the changes permament
    $db->commit();
} catch (Exception $e) {
    // roll back any changes you've made
    $db->rollback();
    throw $e;
}

競合解決の正確な動作は、ニーズに合わせて変更できるトランザクション分離レベルによって定義されます。

于 2013-01-25T03:41:14.477 に答える