0
테이블에 레코드를 추가 할 때 다른 여러 테이블의 여러 레코드를 업데이트하는 트리거 함수를 포스트그레스에 작성하려고합니다.트리거를 사용하여 여러 테이블의 여러 레코드 업데이트
예를 들어 스키마 'survey'와 'a_household'라는 테이블이 있습니다.
이 스키마에는 세대 테이블의 ID를 참조하는 'hh_id'필드가있는 여러 테이블이 있습니다.
모든 테이블의 hh_id는 테이블의 다른 속성이 일치하는 경우에만 세대 테이블의 ID를 참조합니다. 나는 완전히 실패하고
DECLARE
tables text[] = ARRAY['b_member','f_firewood'];
table_name text;
r record;
BEGIN
FOREACH table_name IN ARRAY tables
LOOP
INSERT INTO survey.table_name(hh_id) values (NEW.id)
SELECT * FROM survey.table_name
WHERE survey.table_name.a= NEW.b;
END LOOP;
END;
- 어떤 조언은 감사 : 같은
현재 나의 실패 코딩 보인다. (아래의 응답을 읽은 후)
내 두 번째 시도했다 :
DECLARE
tables text[] = ARRAY['b_member'];
table_name text;
BEGIN
if tg_op='INSERT' then
FOREACH table_name IN ARRAY tables
LOOP
EXECUTE 'UPDATE ' || 'survey.' || table_name || ' SET hh_id = '||NEW.id||' FROM household.a_household WHERE (select survey.b_member.odk_parentkey from survey.b_member
where survey.b_member.odk_key = "'||NEW.odk_key||'");';
END LOOP;
end if;
return new;
END;
하지만 난 오류 메시지 '열'HGD는 '존재하지 않는 반환하고 있습니다. NEW.odk_key의 값입니다. 베키