Страница 1 из 1

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

Добавлено: 14 Март 2007, 4:30
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
 ...

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

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