PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn PostgreSQL cho danh sách các giá trị được phép trong một ràng buộc?

Bạn có thể truy vấn danh mục hệ thống pg_constraint , ví dụ:

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) 

Sử dụng chức năng sau để giải nén chuỗi:

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. Phương pháp hay nhất để xác định jsonb null trong plpgsql

  2. Postgres hàm INSERT hàng loạt bằng cách sử dụng các đối số JSON

  3. Giám sát cơ sở dữ liệu PostgreSQL:Mẹo để giám sát những gì

  4. Cách statement_timestamp () hoạt động trong PostgreSQL

  5. psql:lệnh không tìm thấy Mac