Sequência

Em PostgreSQL, uma sequência (sequence) é um objeto de banco de dados que gera automaticamente números sequenciais. Sequências são frequentemente usadas para gerar valores únicos para chaves primárias em tabelas. Aqui está como você pode criar e usar sequências em PostgreSQL:

Criar uma Sequência:

Para criar uma sequência, você pode usar o comando CREATE SEQUENCE. Aqui está a sintaxe básica:

CREATE SEQUENCE nome_da_sequencia
    [INCREMENT BY valor_incremento]
    [MINVALUE valor_minimo]
    [MAXVALUE valor_maximo]
    [START WITH valor_inicial]
    [CACHE quantidade_de_valores_cacheados]
    [CYCLE | NO CYCLE];
  • INCREMENT BY: Especifica o valor pelo qual a sequência é incrementada. O valor padrão é 1.
  • MINVALUE: Especifica o valor mínimo da sequência. O valor padrão é -9223372036854775807.
  • MAXVALUE: Especifica o valor máximo da sequência. O valor padrão é 9223372036854775807.
  • START WITH: Especifica o valor inicial da sequência. O valor padrão é o valor mínimo da sequência ou o valor especificado em MINVALUE.
  • CACHE: Especifica quantos valores sequenciais devem ser pré-alocados e mantidos em cache para melhorar o desempenho. O valor padrão é 1.
  • CYCLE | NO CYCLE: Especifica se a sequência deve começar de novo após atingir o valor máximo (CYCLE) ou se deve gerar um erro (NO CYCLE).

Exemplo de criação de uma sequência:

CREATE SEQUENCE id_seq
    INCREMENT BY 1
    MINVALUE 1
    START WITH 1
    CACHE 10;

Usar a Sequência em uma Tabela:

Você pode usar a sequência para gerar valores automáticos para uma coluna em uma tabela. Por exemplo, para criar uma tabela com uma coluna id que é automaticamente preenchida pela sequência id_seq, você faria o seguinte:

CREATE TABLE exemplo (
    id INT DEFAULT nextval('id_seq'::regclass) PRIMARY KEY,
    nome VARCHAR(255)
);

Neste exemplo, a coluna id será preenchida automaticamente pela sequência id_seq sempre que uma nova linha for inserida na tabela exemplo.

Obter o Próximo Valor da Sequência:

Para obter o próximo valor da sequência sem inseri-lo em uma tabela, você pode usar a função nextval():

SELECT nextval('id_seq'::regclass);

Esta consulta retornará o próximo valor da sequência id_seq.