6

出于习惯,我一直在我的应用程序代码中对所有 SQL 查询使用 try/catch 块,并在 catch 块的开头进行回滚。我也一直在提交那些成功的。这对SELECTs有必要吗?它是否在数据库端释放了一些东西?选择语句没有改变任何数据,所以它似乎有点毫无意义,但也许有一些我不知道的原因。

例如

try {
  $results = oci_execute($statement)
  oci_commit($connection);
  return $results;
}
catch {
  oci_rollback($connection)
  throw new SqlException("failed");
}
4

1 回答 1

7

SELECTOracle(除非它们是)中的语句SELECT FOR UPDATE从不锁定任何记录,也从不隐式打开事务。

除非您在事务中发出任何DML操作,否则提交或回滚事务都没有关系。

于 2010-03-04T15:15:28.470 回答