Форум: "Базы";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
ВнизНазавершенная транзакция в прерванной хп. Найти похожие ветки
← →
Bless (2004-02-03 16:44) [0]Что происходит, выполнение хранимой процедуры, внутри которой была начата транзакция (begin tran...), была прервана из-за ошибки до команды commit tran или rollback tran.
Что происходит с транзакцией в таком случае? Откатывается ли она автоматически?
Или ошибки внутри процедуры не прерывают ее работу?
← →
KSergey (2004-02-03 16:45) [1]Нифига она не откатывается
Это надо учитывать при разработке ХП и откатывать ее обязательно!
← →
KSergey (2004-02-03 16:47) [2]Ошибки внутри процедуры не завершают ее работу
после каждого оператора надо писать
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN 0 -- признак ошибки
END
или ждать юкон - в нем обещают нормальную обработку исключений
← →
Nikolay M. (2004-02-03 17:04) [3]Скорее всего не откатится. А какого рода "ошибки" имеются в виду?
← →
Bless (2004-02-03 17:27) [4]to KSergey> Спасибо.
>А какого рода "ошибки" имеются в виду?
Не знаю. Разные. А что, это имеет значение?
← →
ZrenBy (2004-02-03 18:14) [5]SET XACT_ABORT ON
Но ложка дегтя
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=39919
← →
Bless (2004-02-04 09:39) [6]ZrenBy> Вот это здорово :(
Тамошним примером навеяло такие вопросы:
1) Когда компилируется хп?
Перед ее вызовом?
Или один раз сразу после ее создания?
← →
Nikolay M. (2004-02-04 09:57) [7]
> Когда компилируется хп?
Насколько я понимаю в колбасных обрезках, то если в ХП имеется динамический SQL, то ХП будет компилиться каждый раз перед вызовом. Если такого нет, то при создании.
Буду рад услышать другие аргументированные мнения.
← →
Nikolay M. (2004-02-04 10:18) [8]
> Если такого нет, то при создании
Поправлю сам себя. Вот тут описаны некоторые подводные камни:
http://mylib.noda.ru/view.php?id=475
← →
Bless (2004-02-04 14:40) [9]Всем спасибо. Вопрос исчерпан.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c