我应该回滚失败的SELECT语句还是提交成功的语句?

时间:2010-03-04 15:13:06

标签: php sql oracle transactions rollback

出于习惯,我一直在我的应用程序代码中使用try / catch块来处理所有SQL查询,并在catch块的开头进行回滚。我也一直在承诺那些成功的。这对SELECT是必要的吗?它是否释放了数据库方面的东西? select语句不会改变任何数据,因此看起来有点无意义,但也许有一些我不知道的原因。

e.g。

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

1 个答案:

答案 0 :(得分:7)

SELECT中的

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

除非您在交易中发出任何DML操作,否则无论您是提交还是回滚交易都无关紧要。