Las vistas de esquema de información y pg_typeof () devuelven información de tipo incompleta. De estas respuestas, psql
proporciona la información de tipo más precisa. (El OP podría no necesitar información tan precisa, pero debería conocer las limitaciones).
create domain test_domain as varchar(15);
create table test (
test_id test_domain,
test_vc varchar(15),
test_n numeric(15, 3),
big_n bigint,
ip_addr inet
);
El uso psql
y \d public.test
muestra correctamente el uso del tipo de datos test_domain
, la longitud de las columnas varchar (n) y la precisión y escala de las columnas numéricas (p, s).
sandbox = # \ d public.test
Tabla "public.test"
Columna | Tipo | Modificadores
--------- + ----------------------- + -----------
test_id | test_domain |
test_vc | carácter variable (15) |
prueba_n | numérico (15,3) |
big_n | bigint |
ip_addr | inet |
Esta consulta contra una vista de información_esquema no muestra el uso de test_domain
. Tampoco informa los detalles de las columnas varchar (n) y numéricas (p, s).
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
nombre_columna | tipo de datos
------------- + -------------------
test_id | carácter variable
test_vc | carácter variable
prueba_n | numérico
big_n | Empezando
ip_addr | inet
Es posible que pueda obtener toda esa información uniéndose a otras vistas de información_esquema o consultando directamente las tablas del sistema. psql -E
podría ayudar con eso.
La función pg_typeof()
muestra correctamente el uso de test_domain
, pero no informa los detalles de las columnas varchar (n) y numéricas (p, s).
select pg_typeof(test_id) as test_id,
pg_typeof(test_vc) as test_vc,
pg_typeof(test_n) as test_n,
pg_typeof(big_n) as big_n,
pg_typeof(ip_addr) as ip_addr
from test;
test_id | test_vc | prueba_n | big_n | ip_addr
------------- + ------------------- + --------- + ------ - + ---------
test_domain | carácter variable | numérico | bigint | inet