-- -- util__foreign_key_exists/4 -- create or replace function util__foreign_key_exists( p_table_name text, p_column text, p_reftable text, p_refcolumn text ) returns bool as $$ BEGIN return exists ( select 1 from information_schema.table_constraints AS tc, information_schema.key_column_usage AS kcu, information_schema.constraint_column_usage AS ccu where tc.constraint_name = kcu.constraint_name and tc.constraint_catalog = kcu.constraint_catalog and tc.constraint_schema = kcu.constraint_schema and tc.table_catalog = kcu.table_catalog and tc.table_schema = kcu.table_schema and ccu.constraint_name = tc.constraint_name and ccu.constraint_catalog = kcu.constraint_catalog and ccu.constraint_schema = kcu.constraint_schema and ccu.table_catalog = kcu.table_catalog and ccu.table_schema = kcu.table_schema and tc.constraint_type = 'FOREIGN KEY' and tc.table_name = lower(p_table_name) and kcu.column_name = lower(p_column) and ccu.table_name = lower(p_reftable) and ccu.column_name = lower(p_refcolumn)); END; $$ language plpgsql;