Tampilan skema informasi dan pg_typeof () mengembalikan informasi tipe yang tidak lengkap. Dari jawaban-jawaban ini, psqlberikan informasi jenis yang paling tepat. (OP mungkin tidak membutuhkan informasi yang tepat seperti itu, tetapi harus mengetahui keterbatasannya.)
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
);
Menggunakan psqldan \d public.testdengan benar menunjukkan penggunaan tipe data test_domain, panjang kolom varchar (n), dan ketepatan dan skala kolom numerik (p, s).
sandbox = # \ d public.test
Tabel "public.test"
Kolom | Ketik | Pengubah
--------- + ----------------------- + -----------
test_id | test_domain |
test_vc | karakter bervariasi (15) |
test_n | numerik (15,3) |
big_n | bigint |
ip_addr | inet |
Permintaan ini terhadap tampilan information_schema tidak menunjukkan penggunaan test_domainsama sekali. Itu juga tidak melaporkan detail kolom varchar (n) dan numerik (p, s).
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
nama_kolom | tipe data
------------- + -------------------
test_id | karakter bervariasi
test_vc | karakter bervariasi
test_n | numerik
big_n | bigint
ip_addr | inet
Anda mungkin bisa mendapatkan semua informasi itu dengan bergabung dengan pandangan information_schema lain, atau dengan menanyakan tabel sistem secara langsung. psql -Emungkin membantu dengan itu.
Fungsi pg_typeof()dengan benar menunjukkan penggunaan test_domain, tetapi tidak melaporkan detail kolom varchar (n) dan numerik (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
------------- + ------------------- + --------- + ------ - + ---------
test_domain | karakter yang bervariasi | numerik | bigint | inet