
O que é uma Sequência?
No Oracle, uma sequência é um objeto de banco de dados que gera números únicos, geralmente utilizados para criar valores exclusivos para chaves primárias. Sequências são especialmente úteis em ambientes multiusuário onde múltiplas transações simultâneas podem ocorrer.
Vantagens de Usar Sequências
- Geração Automática de Valores Únicos: Sequências garantem a geração de valores únicos e sequenciais, evitando duplicações.
- Independência de Transação: Valores de sequência são gerados independentemente das transações, garantindo a consistência.
- Facilidade de Uso: Sequências podem ser facilmente implementadas e utilizadas em comandos SQL.
Como Criar uma Sequência
A criação de uma sequência no Oracle é feita através do comando CREATE SEQUENCE
. Veja um exemplo básico:
CREATE SEQUENCE func_seq START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
Neste exemplo, a sequência func_seq
inicia em 1 e incrementa em 1 para cada valor gerado.
Opções Adicionais para a Criação de Sequências
- START WITH: Especifica o valor inicial da sequência.
- INCREMENT BY: Define o incremento entre cada valor gerado.
- MAXVALUE: Determina o valor máximo que a sequência pode gerar.
- MINVALUE: Determina o valor mínimo que a sequência pode gerar.
- CYCLE: Faz a sequência reiniciar no valor mínimo após alcançar o valor máximo.
- NOCYCLE: Impede a sequência de reiniciar, resultando em um erro se o valor máximo for atingido.
- CACHE: Armazena em cache um número especificado de valores de sequência para melhorar o desempenho.
- NOCACHE: Não armazena valores de sequência em cache.
Exemplo:
CREATE SEQUENCE func_seq START WITH 100 INCREMENT BY 10 MAXVALUE 1000 MINVALUE 10 CYCLE CACHE 20;
Consultando Valores de Sequência
Você pode visualizar o valor atual de uma sequência utilizando CURRVAL
:
SELECT func_seq.CURRVAL FROM dual;
Observação: Se a sequência nunca tiver sido usada anteriormente na sessão atual, a consulta a CURRVAL
pode gerar um erro. Nesse caso, utilize NEXTVAL
para gerar o próximo valor e definir o valor corrente da sequência.
Para gerar o próximo valor da sequência, use NEXTVAL
:
SELECT func_seq.NEXTVAL FROM dual;
Alterando uma Sequência
Você pode modificar uma sequência existente com o comando ALTER SEQUENCE
. Suponha que a sequência func_seq
é usada para o id
dos funcionários, e atualmente o último funcionário tem o id
8. Vamos ajustar a sequência para iniciar a partir de 9, incrementando de 1 em 1, para evitar erro de restrição exclusiva quando a sequência for usada:
ALTER SEQUENCE func_seq INCREMENT BY 1 MAXVALUE 500 MINVALUE 1 NOCYCLE CACHE 50 RESTART START WITH 9;
Usando Sequências em Consultas
Sequências são frequentemente utilizadas em instruções INSERT
para gerar valores únicos para chaves primárias.
INSERT INTO funcionarios (id, nome, data_nascimento, email, codigo_cargo, salario, data_admissao, status) VALUES (func_seq.NEXTVAL, 'Ramon Vieira', '17/04/1996', 'ramondacvieira@gmail.com', 2, 4500, CURRENT_DATE, 'Ativo');
Neste exemplo, func_seq.NEXTVAL
gera o próximo valor da sequência, que será 9, para a coluna id
. 9 porque modificamos para restart 9 no exemplo anterior.
Observação: CURRENT_DATE
retorna a data e hora atuais no fuso horário da sessão. Se você deseja apenas a data sem a hora, use TRUNC(CURRENT_DATE)
para truncar a parte de hora e obter apenas a data.
Excluindo uma Sequência
Se uma sequência não for mais necessária, ela pode ser excluída com o comando DROP SEQUENCE
:
DROP SEQUENCE func_seq;
Considerações Finais
Sequências são uma ferramenta poderosa no Oracle para gerar valores únicos automaticamente, garantindo a integridade dos dados e simplificando o gerenciamento de chaves primárias. Elas oferecem diversas opções de configuração para atender a diferentes necessidades, como valores iniciais, incrementos, cache e comportamento de ciclo.
Se quiser saber mais, veja a documentação oficial do Oracle sobre Sequências para obter informações detalhadas e exemplos práticos.
Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!