MySQL handles errors during trigger execution as follows:
• If a BEFORE trigger fails, the operation on the corresponding row is not performed.
• An AFTER trigger is executed only if the BEFORE trigger (if any) and the row operation both
execute successfully.
• An error during either a BEFORE or AFTER trigger results in failure of the whole statement that
caused trigger invocation.
• For transactional tables, failure of a trigger (and thus the whole statement) should cause rollback
of all changes performed by the statement. For non-transactional tables, such rollback cannot be
done, so although the statement fails, any changes performed prior to the point of the error remain
in effect.
Т.е. вызвать ошибку будет логично.
Мне с MySQL5.0 так и не удалось толком поработать, по сему не могу дать точного совета.
Попробуй объявить переменную с NOT NULL, а потом присвоить ей NULL - может это будет удобнее.
Свою ошибку вернуть врятли удастся, а зафиксировать можно: сделать запись в табличку формата MyISAM - транзакции она не поддерживает.
Не проверял, можно ли в тригере объявить DECLARE ... HANDLER ?