나는 여론 조사에 대한 정보와 각 여론 조사는 그것에서이 질문의 수를 포함하는 설문 조사 테이블간단한 트리거가 잘못된 이유는 무엇입니까?
Poll(id, number_of_questions)
있습니다. ,
는 질문이 테이블을
Question(id, text)
이 그리고 나는 성분 표를
Composition(poll, question)
이 여론 조사 Poll.id를 참조하고 참조 Question.id
당신이 말할 수 질문 이 마지막 표에는 각 설문과 그 질문 사이의 연관성이 포함되어 있습니다.
내가의 내가 ID = 3 및 텍스트를 갖는 새로운 질문을 작성한다고 가정 해 봅시다CREATE FUNCTION increment() RETURNS TRIGGER AS $$
BEGIN
UPDATE poll SET number_of_questions = number_of_questions + 1 WHERE poll.id = composition.poll;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER incrementQuestionNumber
AFTER INSERT ON composition FOR EACH ROW
EXECUTE PROCEDURE increment();
그래서 구성에있는 모든 INSERT 후
number_of_questions
를 증가해야하는 트리거를 만들어 = '어떻게 지내 '?
Question(3, 'How are you')
는 그럼한다 트리거 삽입 이후 조성물 테이블
Composition(5, 3)
에 생성되고,이 기록의 결과로, 폴링 조성물 테이블에 인서트 ID = 5를 갖는이 질문 연관 폴링 테이블에 NUMBER_OF_QUESTIONS을 증가 곳 poll.id = 5
현실에서 내가 구성에 삽입을 할 때 그러나, 그것은 (새로운 레코드가 추가되지 않음) 실패하고 난
0을 얻을ERROR: FROM element in table "composition" is missing
트리거가 잘못되었습니다.
잘못된 태그, 아니? – Drew