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!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima