Из привычки я использовал блоки попытки/выгоды в своем коде приложения для всех SQL-запросов с откатом в начале блока выгоды. Я также фиксировал тех, которые успешны. Это необходимое для SELECT
s? Действительно ли это освобождает что-то на стороне базы данных? Избранные операторы не изменяют данных, таким образом, это кажется несколько бессмысленным, но возможно существует некоторая причина, о которой я не знаю.
например.
try {
$results = oci_execute($statement)
oci_commit($connection);
return $results;
}
catch {
oci_rollback($connection)
throw new SqlException("failed");
}
SELECT
в Oracle
(если они не являются SELECT FOR UPDATE
) никогда не блокируют никакие записи и никогда не открывают транзакции неявно.
Если вы не выполнили какие-либо операции DML
в своей транзакции, не имеет значения, фиксируете ли вы транзакцию или откатываете ее.