PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Daftar semua kunci asing PostgreSQL

Kunci asing mungkin didasarkan pada beberapa kolom, jadi conkey dan confkey dari pg_constraint adalah array. Anda harus menghapus susunan array untuk mendapatkan daftar nama atau tipe kolom. Anda dapat menggunakan fungsi berikut:

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
$$;

Fungsinya mungkin sangat berguna saat menanyakan batasan dan indeks. Permintaan Anda bagus dan sederhana dengan mereka:

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. Memperbaiki Postgresql setelah memutakhirkan ke OSX 10.7 Lion

  2. Permintaan lambat dengan gabungan luar kiri dan kondisi nol

  3. PILIH kolom dinamis tanpa fungsi di PostgreSQL

  4. gabungkan dua tabel berbeda dan hapus entri yang digandakan

  5. Cara Mengisi Tanggal yang Hilang di PostgreSQL menggunakan generate_series