sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-fråga för en lista över tillåtna värden i en begränsning?

Du kan fråga systemkatalogen pg_constraint , t.ex.:

select consrc
from pg_constraint
where conrelid = 'requests'::regclass
and consrc like '(status%';

                                  consrc                                   
---------------------------------------------------------------------------
 (status = ANY (ARRAY['pending'::text, 'success'::text, 'failure'::text]))
(1 row) 

Använd följande funktion för att packa upp strängen:

create or replace function get_check_values(str text)
returns setof text language plpgsql as $$
begin
    return query
        execute format (
            'select * from unnest(%s)',
            regexp_replace(str, '.*(ARRAY\[.*\]).*', '\1'));
end $$;

select get_check_values(consrc)
from pg_constraint
where conrelid = 'requests'::regclass
and consrc like '(status%';

 get_check_values 
------------------
 pending
 success
 failure
(3 rows)    


  1. Databasspecifik migreringskod

  2. pg_dump:hur installeras på Amazon Linux för PostgreSQL 9.5.2?

  3. Postgresql:dblink i lagrade funktioner

  4. Får duplicerat kolumnnamnsfel i Django utan uppenbar anledning