Запретить вставку, если условие выполнено

У меня есть столContent как это:

id | text | date | idUser → User | contentType 

И еще один столAnswer:

idAnswer → Content | idQuestion → Content | isAccepted

Я хочу убедиться, чтоAnswerдата больше, чемQuestionдата ВопросContent сcontentType = 'ВОПРОС'.

Я пытался решить эту проблему с помощью следующего триггера, но когда я пытаюсь вставитьAnswer есть ошибка:

ERROR:  record "new" has no field "idanswer"
CONTEXT:  SQL statement "SELECT (SELECT "Content".date FROM "Content" WHERE "Content".id = NEW.idAnswer) < (SELECT "Content".date FROM "Content" WHERE "Content".id = NEW.idQuestion)"
PL/pgSQL function "check_valid_date_answer" line 2 at IF

Спусковой крючок:

CREATE TRIGGER check_valid_answer 
AFTER INSERT ON "Answer"
FOR EACH ROW EXECUTE PROCEDURE check_valid_date_answer();

Функция запуска:

CREATE FUNCTION check_valid_date_answer() RETURNS trigger
    LANGUAGE plpgsql
    AS $BEGIN
  IF (SELECT "Content".date FROM "Content"
      WHERE "Content".id = NEW.idAnswer)
   < (SELECT "Content".date FROM "Content"
      WHERE "Content".id = NEW.idQuestion) 
  THEN
    RAISE NOTICE 'This Answer is an invalid date';
  END IF;
  RETURN NEW;
END;$;

Итак, мой вопрос: мне действительно нужно создать триггер для этого? Я видел, что я не могу использоватьCHECK вAnswer потому что мне нужно сравнить с атрибутом другой таблицы. Есть ли другой (проще / лучше) способ сделать это? Если нет, то почему ошибка и как я могу ее решить?

Ответы на вопрос(2)

Ваш ответ на вопрос