Minha impressão é que cada tabela do PostgreSQL tem um tipo composto correspondente associado a ela. Mas parece que a coluna de identidade do PostgreSQL não pode ser usada em uma CREATE TYPE
declaração:
=> CREATE TYPE _t_type AS (id bigint GENERATED ALWAYS AS IDENTITY);
ERROR: syntax error at or near "GENERATED"
LINE 1: CREATE TYPE _t_type AS (id bigint GENERATED ALWAYS AS IDENTI...
^
, enquanto ele pode ser usado em um CREATE TABLE
:
=> CREATE TABLE _t_table (id bigint GENERATED ALWAYS AS IDENTITY);
CREATE TABLE
Existe uma razão fundamental pela qual as colunas de identidade não podem ou não devem ser usadas na CREATE TYPE
instrução?
(Isso é com o PostgreSQL 14 beta1).
Não faz sentido ter uma coluna de identidade em um tipo de dados. Afinal, um tipo de dados não contém dados. Então sim, isso não é possível.