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

标签 php sql oracle transactions rollback

出于习惯,我一直在我的应用程序代码中为所有 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/

相关文章:

php - 创建 URL 字符串时 XML 中的 & 符号问题

php - 如何检查包含 ip 地址的 php 变量是否位于 inet_aton 格式的两个 ip 地址范围内

oracle - PLSQL中IN、OUT、IN OUT参数的区别

mysql - 如何从 LEFT JOIN mysql 表调用结果

mysql - SELECT/GROUP BY - 时间段(10 秒、30 秒等)

oracle - 为什么DMML错误日志记录在并行语句中被忽略

sql - Oracle 查询使用 Xpath 获取同一节点的逗号分隔列表

javascript - AJAX 后 - {"readyState":0 ,"responseText" :"" ,"status":0 ,"statusText" :"error"}

php - MySQLI错误mysqli_connect

sql - Postgresql - WHERE 中的 MAX 标准 - 初学者问题