5.4. Colunas do sistema

PostgreSQL 14.5: Colunas do sistema

Toda tabela possui diversas colunas do sistema, as quais são implicitamente definidas pelo sistema. Portanto, estes nomes não podem ser utilizados como nomes de colunas definidas pelo usuário (observe que esta restrição é diferente do nome ser uma palavra chave ou não; colocar o nome entre aspas não faz esta restrição deixar de ser aplicada). Não é necessário os usuários se preocuparem com estas colunas, basta apenas saber que elas existem.

oid

O identificador de objeto (object ID) de uma linha. É um número serial adicionado pelo PostgreSQL, automaticamente, a todas as linhas da tabela (a não ser que a tabela seja criada com WITHOUT OIDS e, neste caso, esta coluna não estará presente). O tipo desta coluna é oid (o mesmo nome da coluna); consulte a Seção 8.12 para obter informações adicionais sobre o tipo.

tableoid

O OID da tabela que contém esta linha. Este atributo é particularmente útil nas consultas fazendo seleção em hierarquias de herança, porque sem este atributo é difícil saber de que tabela se origina cada linha. Pode ser feita uma junção entre tableoid e a coluna oid de pg_class para obter o nome da tabela.

xmin

O identificador da transação de inserção (transaction ID) para esta versão da linha (Uma versão da linha é um estado individual da linha; cada atualização da linha cria uma nova versão de linha para a mesma linha lógica).

cmin

O identificador do comando, começando por zero, dentro da transação de inserção.

xmax

O identificador da transação de exclusão (transaction ID), ou zero para uma versão de linha não excluída. É possível que esta coluna seja diferente de zero em uma versão de linha visível: normalmente isto indica que a transação fazendo a exclusão ainda não foi efetivada (commit), ou que uma tentativa de exclusão foi desfeita (rollback).

cmax

O identificador do comando dentro da transação de exclusão, ou zero.

ctid

A posição física da versão da linha dentro da tabela. Deve ser observado que, embora seja possível usar ctid para localizar a versão da linha muito rapidamente, o ctid da linha muda cada vez que a linha é atualizada ou movida pelo comando VACUUM FULL. Portanto, o ctid não serve como identificador de linha duradouro. O OID ou, melhor ainda, um número serial definido pelo usuário deve ser utilizado para identificar logicamente a linha.

Os OIDs são quantidades de 32 bits atribuídas a partir de um contador único para todo o agrupamento de bancos de dados. Em um banco de dados grande ou existente há muito tempo, é possível que o contador recomece. Portanto, é má prática assumir que os OIDs sejam únicos, a menos que sejam realizados procedimentos para garantir que este seja o caso. Se for necessário identificar as linhas da tabela, recomenda-se a utilização de um gerador de seqüência. Entretanto, os OIDs podem ser utilizados desde que sejam tomadas umas poucas precauções adicionais:

Os identificadores das transações também são quantidades de 32 bits. Em um banco de dados existente há muito tempo é possível que os IDs de transação recomecem. Este problema não é fatal se forem obedecidos os procedimentos apropriados de manutenção; consulte o Capítulo 21 para obter detalhes. Entretanto, não é aconselhado depender da unicidade dos IDs de transação por um longo período de tempo (mais de um bilhão de transações).

Os identificadores de comando também são quantidades de 32 bits, criando um limite de 232 (4 bilhões) de comandos SQL dentro de uma única transação. Na prática este limite não é um problema — observe que o limite diz respeito ao número de comandos SQL, e não ao número de linhas processadas.

SourceForge.net Logo CSS válido!