-- -- rel_constraints_ins_tr/0 -- create or replace function rel_constraints_ins_tr( ) returns trigger as $$ declare v_rec record; begin -- insert the constraint insert into rc_segment_required_seg_map (rel_segment, rel_side, required_rel_segment) values (new.rel_segment, new.rel_side, new.required_rel_segment); -- add dependencies insert into rc_segment_required_seg_map select new.rel_segment, new.rel_side, required_rel_segment from rc_segment_required_seg_map where rel_segment = new.required_rel_segment and rel_side = new.rel_side; -- now update the rel_segments that depend on this segment for v_rec in select rel_segment from rc_segment_required_seg_map where required_rel_segment = new.rel_segment and rel_side = new.rel_side LOOP insert into rc_segment_required_seg_map select v_rec.rel_segment, new.rel_side, required_rel_segment from rc_segment_required_seg_map where rel_segment = new.rel_segment and rel_side = new.rel_side; end LOOP; return new; end;$$ language plpgsql;