出于习惯,我一直在我的应用程序代码中为所有 SQL 查询使用 try/catch block ,并在 catch block 的开头进行回滚。我也一直在 promise 那些成功的。这对于 SELECT
是必需的吗?它会释放数据库端的东西吗? select 语句没有改变任何数据,所以看起来有点毫无意义,但也许有一些我不知道的原因。
例如
try {
$results = oci_execute($statement)
oci_commit($connection);
return $results;
}
catch {
oci_rollback($connection)
throw new SqlException("failed");
}
最佳答案
Oracle
中的SELECT
语句(除非它们是SELECT FOR UPDATE
)永远不会锁定任何记录,也永远不会隐式打开事务。
除非您在事务中发出任何 DML
操作,否则提交或回滚事务都无关紧要。
关于php - 我应该回滚失败的 SELECT 语句还是提交成功的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380316/