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 回答