PG_TABLE_DEF
Armazena informações sobre colunas de tabela.
PG_TABLE_DEF retorna somente informações sobre tabelas visíveis para o usuário. Se PG_TABLE_DEF não retornar os resultados esperados, verifique se o parâmetro search_path está definido corretamente para incluir os esquemas relevantes.
Você pode usar SVV_TABLE_INFO para visualizar mais informações abrangentes sobre uma tabela, inclusive distorção dos dados, distorção da distribuição da chave, tamanho da tabela e estatísticas.
Colunas da tabela
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
schemaname | name | Nome do esquema. |
tablename | name | Nome da tabela. |
column | name | Nome da coluna. |
tipo | text | Datatype da coluna. |
encoding | character(32) | Codificação da coluna. |
distkey | booliano | Verdadeiro se essa coluna for a chave de distribuição da tabela. |
sortkey | inteiro | Ordem da coluna na chave de classificação. Se a tabela usar uma chave de classificação composta, todas as colunas que fizerem parte da chave de classificação terão um valor positivo que indicará a posição da coluna na chave de classificação. Se a tabela usar uma chave de classificação intercalada, cada coluna que fizer parte da chave de classificação terá um valor alternadamente positivo ou negativo, onde o valor absoluto indica a posição da coluna na chave de classificação. Se 0, a coluna não fará parte de uma chave de classificação. |
notnull | boolean | Verdadeiro se a coluna tiver uma restrição NOT NULL. |
Exemplo
O exemplo a seguir mostra as colunas da chave de classificação composta da tabela LINEORDER_COMPOUND.
select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_compound' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | 1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | 3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | 5 | true (5 rows)
O exemplo a seguir mostra as colunas da chave de classificação intercalada da tabela LINEORDER_INTERLEAVED.
select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_interleaved' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | -1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | -3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | -5 | true (5 rows)
PG_TABLE_DEF retornará somente informações de tabelas nos esquemas incluídos no caminho de pesquisa. Para ter mais informações, consulte search_path.
Por exemplo, suponhamos que você crie um novo esquema e uma nova tabela e, em seguida, consulte PG_TABLE_DEF.
create schema demo; create table demo.demotable (one int); select * from pg_table_def where tablename = 'demotable'; schemaname|tablename|column| type | encoding | distkey | sortkey | notnull ----------+---------+------+------+----------+---------+---------+--------
A consulta não retorna linhas para a nova tabela. Examine a configuração de search_path
.
show search_path; search_path --------------- $user, public (1 row)
Adicione o esquema demo
ao caminho de pesquisa e execute a consulta novamente.
set search_path to '$user', 'public', 'demo'; select * from pg_table_def where tablename = 'demotable'; schemaname| tablename |column| type | encoding |distkey|sortkey| notnull ----------+-----------+------+---------+----------+-------+-------+-------- demo | demotable | one | integer | none | f | 0 | f (1 row)