sql >> データベース >  >> RDS >> PostgreSQL

配列のPostgresUNIQUECONSTRAINT

    一意の制約を持つ関数は使用できないと思いますが、一意のインデックスを使用することはできます。 。したがって、次のような並べ替え関数が与えられます:

    create function sort_array(anyarray) returns anyarray as $$
        select array_agg(distinct n order by n) from unnest($1) as t(n);
    $$ language sql immutable;
    

    次に、これを行うことができます:

    create table mytable (
        interface integer[2] 
    );
    create unique index mytable_uniq on mytable (sort_array(interface));
    

    次に、次のことが起こります。

    => insert into mytable (interface) values (array[11,23]);
    INSERT 0 1
    => insert into mytable (interface) values (array[11,23]);
    ERROR:  duplicate key value violates unique constraint "mytable_uniq"
    DETAIL:  Key (sort_array(interface))=({11,23}) already exists.
    => insert into mytable (interface) values (array[23,11]);
    ERROR:  duplicate key value violates unique constraint "mytable_uniq"
    DETAIL:  Key (sort_array(interface))=({11,23}) already exists.
    => insert into mytable (interface) values (array[42,11]);
    INSERT 0 1
    


    1. SQLServerの「describetable」に相当するものは何ですか?

    2. PostgresからSQLServer2008への移行

    3. SQLiteを除く

    4. 列の値をコンマ区切りのリストに連結する