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

Kueri PostgreSQL untuk daftar nilai yang diizinkan dalam batasan?

Anda dapat menanyakan katalog sistem pg_constraint , misalnya:

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) 

Gunakan fungsi berikut untuk membongkar string:

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. Menyortir catatan dari PostgreSQL dengan beberapa titik desimal (.)

  2. Bagaimana saya bisa menggunakan variabel sebagai nama tabel di node-pg?

  3. pg_restore tidak dapat menjalankan kueri:ERROR:nama lokal tidak valid:en_US.UTF-8

  4. Cadangkan PostgreSQL Menggunakan pg_dump dan pg_dumpall

  5. Penulisan Docker dan Postgres :Nama tidak terselesaikan