сейчас я вовлечен в новом проекте, и я столкнулся с ниже логики в 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 используется в триггерах и когда он может срабатывать?
Вы должны использовать 'raiserror' и не проверяя @@ ошибки. http://stackoverflow.com/questions/23631224/sybase-is-it-possible-to-set-error –
Майкл Гарднер, спасибо за ваш ответ, но мне не нужно поднимать ошибку, я хочу понять, почему логика с ошибкой @@? Если INSERT вызовет ошибку (например, будут вставлены повторяющиеся значения), будет сброшена ошибка и ** если @@ error! = 0 ** никогда не будет запускаться. У вас горячие идеи, почему **, если в триггерах используется @@ error! = 0 **? –