-- -- rel_constraint__violation/1 -- create or replace function rel_constraint__violation( integer ) returns varchar as $$ declare violation__rel_id alias for $1; v_error text; constraint_violated record; begin v_error := null; for constraint_violated in select constraint_id, constraint_name from rel_constraints_violated_one where rel_id = violation__rel_id LIMIT 1 LOOP v_error := coalesce(v_error,'') || 'Relational Constraint Violation: ' || constraint_violated.constraint_name || ' (constraint_id=' || constraint_violated.constraint_id || '). '; return v_error; end loop; for constraint_violated in select constraint_id, constraint_name from rel_constraints_violated_two where rel_id = violation__rel_id LIMIT 1 LOOP v_error := coalesce(v_error,'') || 'Relational Constraint Violation: ' || constraint_violated.constraint_name || ' (constraint_id=' || constraint_violated.constraint_id || '). '; return v_error; end loop; return v_error; end;$$ language plpgsql;