-- -- rel_constraint__violation_if_removed/1 -- create or replace function rel_constraint__violation_if_removed( integer ) returns varchar as $$ declare violation_if_removed__rel_id alias for $1; v_count integer; v_error text; constraint_violated record; begin v_error := null; select count(*) into v_count from dual where exists (select 1 from rc_violations_by_removing_rel r where r.rel_id = violation_if_removed__rel_id); if v_count > 0 then -- some other relation depends on this one. Lets build up a string -- of the constraints we are violating for constraint_violated in select constraint_id, constraint_name from rc_violations_by_removing_rel r where r.rel_id = violation_if_removed__rel_id LOOP v_error := v_error || 'Relational Constraint Violation: ' || constraint_violated.constraint_name || ' (constraint_id=' || constraint_violated.constraint_id || '). '; end loop; end if; return v_error; end;$$ language plpgsql;