#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