Widoki schematu informacji i pg_typeof () zwracają niekompletne informacje o typie. Spośród tych odpowiedzi psql
najdokładniejsze informacje dotyczące typu. (PO może nie potrzebować tak dokładnych informacji, ale powinien znać ograniczenia.)
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
);
Użycie psql
i \d public.test
poprawnie pokazuje użycie typu danych test_domain
, długość kolumn varchar (n) oraz dokładność i skalę kolumn liczbowych (p, s).
sandbox = # \ d public.test
Tabela „public.test”
Kolumna | Wpisz | Modyfikatory
--------- + ----------------------- + -----------
test_id | domena_testowa |
test_vc | zmienny znak (15) |
test_n | numeryczne (15,3) |
big_n | bigint |
ip_addr | inet |
To zapytanie skierowane do widoku information_schema w ogóle nie pokazuje użycia test_domain
. Nie przedstawia również szczegółów kolumn varchar (n) i liczbowych (p, s).
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
nazwa_kolumny | typ danych
------------- + -------------------
test_id | charakter zmienny
test_vc | charakter zmienny
test_n | numeryczny
big_n | bigint
ip_addr | inet
Państwo może być w stanie uzyskać wszystkie te informacje, łącząc inne poglądy information_schema lub poprzez wysłanie zapytania do tabel systemowych bezpośrednio. psql -E
może w tym pomóc.
Funkcja pg_typeof()
poprawnie pokazuje użycie test_domain
, ale nie zgłasza szczegółów kolumn varchar (n) i liczbowych (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 | test_n | big_n | ip_addr
------------- + ------------------- + --------- + ------ - + ---------
domena_testowa | zmienny znak | numeryczny | bigint | inet