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