declare
v_error text;
map record;
begin
-- First check if removing this relation would violate any relational constraints
v_error := rel_constraint__violation_if_removed(old.rel_id);
if v_error is not null then
raise EXCEPTION '-20000: %', v_error;
end if;
for map in select group_id, element_id, rel_type
from group_element_index
where rel_id = old.rel_id
loop
perform party_approved_member__remove(map.group_id, map.element_id, old.rel_id, map.rel_type);
end loop;
delete from group_element_index
where rel_id = old.rel_id;
return old;
end;