Создание исключения в postgresql

#postgresql

#postgresql

Вопрос:

Возникает странная ошибка, возникающая из функции:

 CREATE OR REPLACE FUNCTION addAnswer(bodyR VARCHAR, userIdR BIGINT, qId BIGINT)
RETURNS BIGINT AS $$
DECLARE
  ret BIGINT;
  author_idR BIGINT;
    BEGIN 
    author_idR := (SELECT "a"."author_id" FROM "question" "a" WHERE "a"."id"=qId);

    IF (author_idR = userIdR ) THEN
      RAISE EXCEPTION "Question author and answer author shouldn't match!";
    ENDIF;

    INSERT INTO "answer"("body", "author_id", "created_at", "question_id") VALUES (bodyR, userIdR, CURRENT_TIMESTAMP, qId);
    ret := LASTVAL();
    RETURN ret;
  END
  $$ LANGUAGE plpgsql;
  

Я получаю сообщение об ошибке:

 ERROR:  unrecognized exception condition "Question author and answer author shouldn't match!"
CONTEXT:  compilation of PL/pgSQL function "addanswer" near line 9

********** Error **********

ERROR: unrecognized exception condition "Question author and answer author shouldn't match!"
SQL state: 42704
Context: compilation of PL/pgSQL function "addanswer" near line 9
  

Ценю любые предложения, спасибо.

Комментарии:

1. Эмпирическое правило: никогда не используйте двойные кавычки в SQL — тогда вы не столкнулись бы с этой проблемой….

Ответ №1:

Вы не должны использовать " для указания текста исключения. Используйте ' вместо этого.

Смотрите https://www.postgresql.org/docs/9.3/static/plpgsql-errors-and-messages.html