Должен ли я откатывать неудачные инструкции SELECT или фиксировать успешные?


По привычке я использую блоки try/catch в своем коде приложения для всех SQL-запросов с откатом в начале блока catch. Я также совершал те, которые были успешными. Необходимо ли это для SELECTs? Освобождает ли это что-то на стороне базы данных? Операторы select не изменяют никаких данных, поэтому это кажется несколько бессмысленным, но, возможно, есть какая-то причина, о которой я не знаю.

Например,

try {
  $results = oci_execute($statement)
  oci_commit($connection);
  return $results;
}
catch {
  oci_rollback($connection)
  throw new SqlException("failed");
}
Author: abatishchev, 2010-03-04

1 answers

SELECT операторы в Oracle (если они не являются SELECT FOR UPDATE) никогда не блокируют какие-либо записи и никогда не открывают транзакции неявно.

Если вы не выполнили какие-либо операции DML в рамках своей транзакции, не будет иметь значения, совершите ли вы транзакцию или откатите ее.

 7
Author: Quassnoi, 2010-03-04 15:15:28