Должен ли я откатить неудачные операторы SELECT или зафиксировать успешные? - PullRequest
6 голосов
/ 04 марта 2010

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

, например

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

1 Ответ

7 голосов
/ 04 марта 2010

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

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

...