2.2. 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 estas restrições são distintas do nome ser uma palavra chave ou não; colocar o nome entre aspas não faz esta restrição deixar de ser aplicada). Os usuários não precisam se preocupar com estas colunas, basta apenas saber que existem.

oid

O identificador de objeto (object ID) de uma linha. É um número serial automaticamente adicionado pelo PostgreSQL a todas as linhas da tabela (a não ser que a tabela seja criada com WITHOUT OIDS; neste caso esta coluna não estará presente). O tipo desta coluna é oid (o mesmo nome da coluna); veja a Seção 5.10 para obter mais informações relativas ao 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 qual tabela cada linha se origina. 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) desta tupla (Nota: neste contexto, a tupla é um estado individual de uma linha; cada atualização da linha cria uma nova tupla 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 tupla não excluída. É possível que este campo seja diferente de zero para uma tupla 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 localização física da tupla dentro da tabela. Observe que, embora seja possível usar o ctid para localizar uma tupla muito rapidamente, o ctid da linha muda cada vez que a linha é atualizada ou movida pelo 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 uma linha.