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;