एक विदेशी कुंजी कई स्तंभों पर आधारित हो सकती है, इसलिए conkey
और confkey
pg_constraint
. का सरणियाँ हैं। स्तंभ नामों या प्रकारों की सूची प्राप्त करने के लिए आपको सरणियों को खोलना होगा। आप इन कार्यों का उपयोग कर सकते हैं:
create or replace function get_col_names(rel regclass, cols int2[])
returns text language sql as $$
select string_agg(attname, ', ' order by ordinality)
from pg_attribute,
unnest(cols) with ordinality
where attrelid = rel
and attnum = unnest
$$;
create or replace function get_col_types(rel regclass, cols int2[])
returns text language sql as $$
select string_agg(typname, ', ' order by ordinality)
from pg_attribute a
join pg_type t on t.oid = atttypid,
unnest(cols) with ordinality
where attrelid = rel
and attnum = unnest
$$;
बाधाओं और अनुक्रमितों को क्वेरी करते समय कार्य बहुत आसान हो सकते हैं। उनके साथ आपकी क्वेरी अच्छी और सरल है:
select
conrelid::regclass,
get_col_names(conrelid, conkey) col_names,
get_col_types(conrelid, conkey) col_types,
conname
from pg_constraint
where contype ='f';
conrelid | col_names | col_types | conname
----------+-----------+-----------+------------------------
products | image_id | int4 | products_image_id_fkey
(1 row)