当执行“LOCK TABLES”时,将调用包装在 try/catch 中以确保在出现异常时解锁表是否明智?
最佳答案
一般来说,对于需要撤消先前操作以防出现任何错误的操作,使用 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;
}
冲突解决的确切行为由事务隔离级别定义,可以根据您的需要进行更改。
关于php - 在 MySQL 中,最好的做法是将 LOCK TABLES 调用包装在 try catch 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514713/