Последовательные ошибки в триггере

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Последовательные ошибки в триггере

Сообщение StillZero »

В триггере вызываются несколько ХП одна за одной:

Код: Выделить всё

 EXEC CS_CountCurrentBalance @GoodsID,@StoreID,1,@QuantityI
 EXEC CS_CountCurrentBalance @GoodsID,@ParentStoreID,1,@QuantityD
 EXEC CS_CountCurrentBalance @GoodsID,@ParentStoreID,-1,@QuantityI
 EXEC CS_CountCurrentBalance @GoodsID,@StoreID,-1,@QuantityD
в ХП есть проверка на ошибки, выполняется след код:

Код: Выделить всё

 IF ОШИБКА
    BEGIN
       ROLLBACK TRAN
       RAISERROR('Отрицательные остатки!', 16, 1)
    END
Судя по поведению программы, если ошибка появится на первом вызове ХП, то дальнейшее
выполнение триггера прервется, так ли это?
Или надо проверять ошибки после вызова каждой ХП, т.е. делать так:

Код: Выделить всё

 EXEC CS_CountCurrentBalance @GoodsID,@StoreID,1,@QuantityI 
 IF @ERROR<>0
    EXEC CS_CountCurrentBalance @GoodsID,@ParentStoreID,1,@QuantityD
 ...
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Последовательные ошибки в триггере

Сообщение Andrew™ »

StillZero писал(а): Судя по поведению программы, если ошибка появится на первом вызове ХП, то дальнейшее
выполнение триггера прервется, так ли это?
любая ошибка в триггере, независимо в теле триггера или в какой либо ХП из триггера - происходит RETURN Из триггера, и ежели это всё оформлено в транзакционных рамках - полный откат выполнения триггера.
Ответить