Coluna Identidade
No PostgreSQL, uma coluna de identidade (identity column) é uma coluna de uma tabela que é automaticamente preenchida com valores únicos à medida que as linhas são inseridas na tabela. Colunas de identidade são frequentemente usadas como chaves primárias, pois garantem que cada linha tenha um valor de chave único.
A partir do PostgreSQL 10, você pode criar colunas de identidade usando a cláusula GENERATED BY DEFAULT AS IDENTITY
. Veja como você pode criar uma coluna de identidade:
CREATE TABLE exemplo (
id SERIAL PRIMARY KEY,
nome VARCHAR(255)
);
Neste exemplo, a coluna id
é uma coluna de identidade. O tipo de dados SERIAL
é uma abreviação para um tipo de dado inteiro grande (BIGINT
) com uma sequência associada e uma restrição de chave primária. Isso significa que o PostgreSQL criará automaticamente uma sequência para a coluna id
e preencherá automaticamente os valores para cada nova linha inserida na tabela exemplo
.
A coluna id
será automaticamente preenchida com valores únicos e crescentes à medida que você insere novas linhas na tabela. Por exemplo, ao inserir uma nova linha sem especificar um valor para id
, o PostgreSQL gerará automaticamente um valor único para você:
INSERT INTO exemplo (nome) VALUES ('Exemplo de Nome');
Nesse caso, o valor da coluna id
será gerado automaticamente pela sequência associada à coluna de identidade.
A partir do PostgreSQL 12, você também pode usar a cláusula GENERATED ALWAYS
para criar colunas de identidade que não podem ser explicitamente inseridas ou atualizadas. Por exemplo:
CREATE TABLE exemplo (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(255)
);
Nesse caso, a coluna id
será sempre gerada automaticamente pelo PostgreSQL e não pode ser especificada manualmente durante as operações de inserção ou atualização.