Имею код вот такого вида
Код |
---|
function funcName($aram){
global $DB;
global $APPLICATION;
$DB->StartTransaction(); // Старт транзакции
try {
$sql = "
INS ERT INTO table
SE T ID = 1
";
if ( !($result = $DB->Query($sql, true)) )
throw new Exception("sql ошибка: $sql");
if ( !($row = $result->Fetch()) ){
return self::funcName($param);
}
$DB->Commit();
return true;
} catch (Exception $e) {
$DB->Rollback();
return false;
}
} |
проблема заключается в рекурсивном использовании функции. Когда в этом случае возникает ошибка и транзакция, по идее должна быть откатана, то этого не случается и запись остается в базе данных