2017-02-08 37 views
0

сейчас я вовлечен в новом проекте, и я столкнулся с ниже логики в Sybase ASE триггере:@@ ERROR <> 0 в триггере

CREATE TRIGGER TR_TEST2 
    ON TBL_TEMP2 
FOR INSERT 
AS 
insert into TBL_TEMP select * from inserted 
if @@error != 0 
begin 
print 'ERROR!!!' 
rollback trigger 
end 

Я проверил этот триггер с разными случаями, и я могу Не поймите, когда , если будет @@ error! = 0. Если в INSERT есть некоторые ошибки, триггер просто выходит из строя с ошибкой и откатывается назад. И запуск триггера будет прерван в заявлении, которое вызвало ошибку Может кто-нибудь объяснить мне, для каких целей , если @@ error! = 0 используется в триггерах и когда он может срабатывать?

+0

Вы должны использовать 'raiserror' и не проверяя @@ ошибки. http://stackoverflow.com/questions/23631224/sybase-is-it-possible-to-set-error –

+0

Майкл Гарднер, спасибо за ваш ответ, но мне не нужно поднимать ошибку, я хочу понять, почему логика с ошибкой @@? Если INSERT вызовет ошибку (например, будут вставлены повторяющиеся значения), будет сброшена ошибка и ** если @@ error! = 0 ** никогда не будет запускаться. У вас горячие идеи, почему **, если в триггерах используется @@ error! = 0 **? –

ответ

0

Я использовал для тестирования Sybase Central v.6.0 И does't показать какие результаты печати при возникновении ошибки Когда я использовал QTODBC инструмент для подключения к серверу Sybase ASE, он бросил меня исключение и печататься " ОШИБКА!!!' сообщение

Итак, это особенность Sybase Central среды На самом деле, триггер возобновляет работу, когда произошла какая-либо ошибка

Смежные вопросы