Условия пользовательских исключений PostgreSQL - PullRequest
8 голосов
/ 14 октября 2011

Можно ли создать пользовательские условия при возникновении исключения? Рассмотрим следующий пример:

BEGIN       
    y := x / 0;
EXCEPTION
    WHEN division_by_zero THEN
        RAISE NOTICE 'caught division_by_zero';
        RETURN x;
END;

Здесь я использую условие 'Division_by_zero', чтобы перехватить исключение. Я хотел бы сделать что-то вроде этого:

BEGIN       
    [...]
    RAISE custom_condition;
EXCEPTION
    WHEN custom_condition THEN
       [...]
END;

чтобы я не вмешивался в возможные стандартные исключения. Я мог бы просто сделать у: = 1/0; и поймать Division_by_zero, но это выглядит не так.

1 Ответ

16 голосов
/ 14 октября 2011
begin
    if $1='bar' then
        raise exception using
            errcode='NOBAR',
            message='Bar is prohibited',
            hint='We do not talk to this guy';
    end if;
exception
    when sqlstate 'NOBAR' then
        update nobar_raised set count=count+1;
end;

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...