Должен ли я откатывать неудачные инструкции SELECT или фиксировать успешные?
По привычке я использую блоки try/catch в своем коде приложения для всех SQL-запросов с откатом в начале блока catch. Я также совершал те, которые были успешными. Необходимо ли это для SELECT
s? Освобождает ли это что-то на стороне базы данных? Операторы select не изменяют никаких данных, поэтому это кажется несколько бессмысленным, но, возможно, есть какая-то причина, о которой я не знаю.
Например,
try {
$results = oci_execute($statement)
oci_commit($connection);
return $results;
}
catch {
oci_rollback($connection)
throw new SqlException("failed");
}
6
Author: abatishchev, 2010-03-04
1 answers
SELECT
операторы в Oracle
(если они не являются SELECT FOR UPDATE
) никогда не блокируют какие-либо записи и никогда не открывают транзакции неявно.
Если вы не выполнили какие-либо операции DML
в рамках своей транзакции, не будет иметь значения, совершите ли вы транзакцию или откатите ее.
7
Author: Quassnoi, 2010-03-04 15:15:28