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. SQLでランダムな名前を生成する

    2. 返されるクエリ:ORA-01427複数の行を返す単一行のサブクエリ

    3. PHPを使用してMySQLに安全に接続するための最良の方法

    4. GoogleAppsScriptでストアドプロシージャを実行する