Criando Sequences no Oracle

Olá Pessoal…

Hoje irei falar do recurso de Sequences no Oracle (qual a funcionalidade, recursos e como criar). Ou seja, como criar o recurso de auto-incremento no Oracle.


Em bases Oracle, para se fazer campos sequencias qual seria a melhor forma?

Utilizar um recurso chamado Sequence, onde é possível manipular o valor corrente e pegar o próximo valor, e a cada vez que o próximo valor é usado, ele se torna o valor corrente, e um próximo fica disponível.

Por exemplo, o valor corrente é 1, se pegar o próximo valor, o valor corrente se torna 2, se pegar novamente o próximo valor, o valor corrente se torna 3, e assim por diante, conforme a imagem abaixo:

Representação de Sequence

Representação de Sequence

No exemplo acima notamos como a Sequence é utilizado, para valores obsoletos, não é possível manipular mais seu conteúdo (1), já o valor corrente pode ser utilizado ainda (2), mas quando se usa o próximo valor (3), ele se torna o valor corrente.

Para criar uma Sequence, basta utilizar o seguinte script:

CREATE SEQUENCE NOME_SEQ
  START WITH 1
  INCREMENT BY 1
  MAXVALUE 999
  MINVALUE 1
  NOCACHE
  NOCYCLE;

Onde:

START WITH Valor que inicia a sequence, nosso exemplo foi 1
INCREMENT BY Qual será o incrementando, no nosso caso, de 1 em 1
MAXVALUE Valor máximo que pode ser atingido pela sequence
MINVALUE Valor mínimo que pode ser usado na sequence
NOCACHE / CACHE N Especifica o quanto de cache o Oracle pré-aloca
NOCYCLE / CYCLE Indica se ao chegar ao máximo, a sequence retorna ao início

Para excluir uma Sequence, é mais simples ainda, basta usar um drop:

DROP SEQUENCE NOME_SEQ;

Para pegar o próximo valor, utilizamos a função NEXTVAL(), conforme exemplo(s) abaixo:

SELECT NOME_SEQ.NEXTVAL() FROM DUAL;
INSERT INTO TABELA VALUES (NOME_SEQ.NEXTVAL());

Para pegar o valor corrente, utilizamos a função CURRVAL(), conforme exemplo(s) abaixo:

SELECT NOME_SEQ.CURRVAL() FROM DUAL;
INSERT INTO TABELA VALUES (NOME_SEQ.CURRVAL());

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas na TOTVS Oeste Paulista Bauru. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

2 respostas em “Criando Sequences no Oracle

Deixe uma resposta