sql >> Database teknologi >  >> RDS >> PostgreSQL

Opret en række tilpassede domænepostgres

En anden mulig løsning er:

CREATE TYPE foo_tup AS (item foo);

Domænetyper kan pakkes ind i tuples som denne, og det giver dig en array-konstruktør. Ulempen er nu, at du sandsynligvis vil oprette casts:

select array[row('foo')::foo_tup, row('bar')];

For eksempel kan du oprette en funktion og en cast:

create function foo_tup(foo) returns foo_tup language sql as $$
    select row($1)::foo_tup;
$$ immutable;
create function foo(foo_tup) returns foo language sql as $$
     select $1.item;
$$;
create cast (foo as foo_tup) with function foo_tup(foo);
create cast (foo_tup as foo) with function foo(foo_tup);

Så bliver aggregering let:

select array_agg(myfoo::foo_tup) from my_table; 

selvom du får ekstra parentes.




  1. 2 måder at kontrollere, om dataadgang er aktiveret i SQL Server (T-SQL-eksempler)

  2. SQL UDENLANDSKE NØGLEBEGRÆNSNING:Den ultimative, nemme guide til nybegyndere

  3. Sådan fungerer STRING_ESCAPE()-funktionen i SQL Server (T-SQL)

  4. Brug af interval i PostgreSQL med Ruby on Rails