Oracle e seu objeto Sequence

Entenda como funciona a Sequence no Oracle

 

Para utilizar um campo com Auto-Numeração ou Identity como é conhecido por vários sistemas no mercado o Oracle Database traz um objeto chamado SEQUENCE no qual é responsável por essa atividade.

 

Características

         - Acelera a busca do próximo valor a ser utilizado caso esteja na memória;

         - Retira do programador a responsabilidade de ficar controlando o "Next

  Value" de um determinado campo;

         - Geralmente utilizada em campos que tem a Constraint Primary Key;

         - Pode ser um objeto compartilhado, ou seja, pode ser utilizado por várias

   tabelas ao mesmo tempo;

         - Gera números únicos automaticamente.

 

Parâmetros

         CREATE SEQUENCE <name>

                   INCREMENT BY n

                   START WITH n

                   MAXVALUE n

                   NOCYCLE

                   CACHE n;

 

Increment by

irá adicionar ‘n’ em cada número gerado;

Start

valor no qual a sequence irá iniciar;

MaxValue

irá gerar no máximo até o valor ’n’;

NoCycle

Não irá continuar caso o tamanho máximo chegue ao seu limite;

Cache

quantidade de números gerados na memória para facilitar a utilização da sequence. Ao utilizar o cache tem um ganho muito grande no momento da utilização do "Next Value", porém, todos os números que estão na memória e ainda não foram utilizados serão perdidos caso ocorra algum problema com a SGA.

 

Exemplo prático

         -- Cria Sequência

                   create sequence seq_DBCenter

                            increment by 1

                            start with 1

                            maxvalue 500

                            nocycle

                            cache 10;

 

         -- Cria Tabela

                   create table tb_aluno

                            (codigo number(3),

                             nome varchar2(50));

        

-- Inclui registro na tabela criada utilizando a sequence SEQ_DBCENTER

insert into tb_aluno (codigo, nome)

values (seq_DBCenter.nextval, 'Felipe');

 

Conclusão


A utilização de Sequence é considerada uma das “Best Practices” no mercado.