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.