PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie PostgreSQL o listę dozwolonych wartości w ograniczeniu?

Możesz wysłać zapytanie do katalogu systemowego pg_constraint , np.:

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) 

Użyj poniższej funkcji, aby rozpakować ciąg:

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. Jak używać wprowadzania tekstu jako nazw kolumn w funkcji Postgresa?

  2. Pobierz nazwę miesiąca z daty w PostgreSQL

  3. Wprowadzenie do PostgreSQL

  4. Uprawnienia użytkownika PostgreSQL

  5. Python 3.7 psycopg2 - Błąd błędu Xcode:polecenie 'gcc' nie powiodło się ze statusem wyjścia 1