PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सभी विदेशी कुंजियों को सूचीबद्ध करें PostgreSQL

एक विदेशी कुंजी कई स्तंभों पर आधारित हो सकती है, इसलिए 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)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं टेबल कैसे ढूंढ सकता हूं जो किसी विदेशी कुंजी के माध्यम से किसी विशेष पंक्ति का संदर्भ देता है?

  2. सक्रिय रिकॉर्ड पूछताछ और उसकेोकू के साथ समस्या।

  3. रेल ActiveRecord:jsonb पर दोहरे उद्धरण चिह्नों के साथ बाइंड चर का उपयोग कैसे करें?

  4. PostgreSQL में पैटर्न मिलान करते समय स्ट्रिंग से कैसे बचें

  5. PostgreSQL CASE ... END कई शर्तों के साथ