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 emMINVALUE
.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
.