sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur får man fråga om kolumnattribut från tabellnamn med PostgreSQL?

Här är en fråga mot systemkatalogen som ska hämta allt du behöver (med ett bonusfält för primärnyckeln gratis).

SELECT DISTINCT
    a.attnum as num,
    a.attname as name,
    format_type(a.atttypid, a.atttypmod) as typ,
    a.attnotnull as notnull, 
    com.description as comment,
    coalesce(i.indisprimary,false) as primary_key,
    def.adsrc as default
FROM pg_attribute a 
JOIN pg_class pgc ON pgc.oid = a.attrelid
LEFT JOIN pg_index i ON 
    (pgc.oid = i.indrelid AND i.indkey[0] = a.attnum)
LEFT JOIN pg_description com on 
    (pgc.oid = com.objoid AND a.attnum = com.objsubid)
LEFT JOIN pg_attrdef def ON 
    (a.attrelid = def.adrelid AND a.attnum = def.adnum)
WHERE a.attnum > 0 AND pgc.oid = a.attrelid
AND pg_table_is_visible(pgc.oid)
AND NOT a.attisdropped
AND pgc.relname = 'TABLE_NAME'  -- Your table name here
ORDER BY a.attnum;

Vilket skulle ge resultat som:

 num |    name     |             typ             | notnull |       comment       | primary_key 
-----+-------------+-----------------------------+---------+---------------------+-------------
   1 | id          | integer                     | t       | a primary key thing | t
   2 | ref         | text                        | f       |                     | f
   3 | created     | timestamp without time zone | t       |                     | f
   4 | modified    | timestamp without time zone | t       |                     | f
   5 | name        | text                        | t       |                     | f
  • num:Kolumnnumret
  • namn:Kolumnnamnet
  • typ:datatypen
  • notnull:Är kolumnen definierad som NOT NULL
  • kommentar:Alla COMMENT definieras för kolumnen
  • primär_nyckel:Är kolumnen definierad som PRIMARY KEY
  • default:Kommandot som används för standardvärdet


  1. Hur man beräknar glidande medelvärde i rödförskjutning

  2. Finns det ett sätt att hämta autoinkrement-ID från ett förberett uttalande

  3. Hantera PostgreSQL High Availability – Del I:PostgreSQL Automatic Failover

  4. Tidszonlagring i datatyp tidsstämpel med tidszon