PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL заявка за списък с разрешени стойности в ограничение?

Можете да направите запитване до системния каталог pg_constraint , напр.:

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) 

Използвайте следната функция за разопаковане низът:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Име на динамична таблица на SQL заявка в FOR

  2. GitHub Actions:Как да се свържете с Postgres в GithHub Actions

  3. Как изрично да прехвърляте тип литерал на масив в sqlalchemy с помощта на postgresql?

  4. Свържете се с база данни heroku с pgadmin

  5. Как да създам postgres към oracle dblink?