Banco de Dados - Oracle

Como utilizar o objeto Sequence do Oracle

Este objeto é utilizado dentro do banco de dados para fazer uma especie de "auto-incremento", utilizando números sequenciais positivos ou negativos para uma coluna especifíca...

por Rodrigo Almeida



Relatarei a seguir com detalhes os pontos bons e ruins:

Este objeto é utilizado dentro do banco de dados para fazer uma especie de "auto-incremento", utilizando números sequenciais positivos ou negativos para uma coluna especifíca.

Utilizaremos este objeto quando queremos uma coluna que organize os registro do banco, um exemplo, seria a utilização do Sequence para criação de colunas de Código ou Matrícula.

Abaixodemonstrarei um exemplo de criação do Sequence determinando suas opções de uso:

SQL >

CREATE SEQUENCE ALPHAMEK

2

START WITH 1

3

INCREMENT BY 1

MAXVALUE 999

5

CYCLE

6

CACHE 10 ;

Na 1º Linha estamos dizendo para o Oracle criar uma sequencia com o nome ALPHAMEK.

Na 2º Linha será especificado o primeiro número da sequencia, no exemplo está 1.

A 3º Linha vamos determinar o numero de incremento, no caso 1 em 1.

Na 4º Linha será determinada o número máximo que a sequencia atingirá, exemplo 999 números.

A 5º Linha indica que a geração dos números será após ter atingido o número máximo ou o número minimo para as sequencias decrescentes.

E a 6º Linha irá especificar para o banco uma quantidade de números que será guardado na memoria para posteriormente fazer uma consulta rápida.

Bom, agora deu para entender a criação de um objeto sequence dentro do banco, precisamos saber agora como utilizá-la, e para isso basta você incluir o sequence dentro do seu comando Insert, veja o exemplo :

SQL >

INSERT INTO TABELA (CODIGO, NOME, EMAIL, SITE)

NextVal,"RODRIGO", "rodrigo@noreal.com","www.noreal.com.br");

A linha acima foi incluída com sucesso, mas perceba que apareceu uma palavra-chave em vermelho após digitar o nome da sequence, essa palavra-chave é para obter o próximo número sequencial (NextVal), poderiamos utilizar outra palavra-chave a CurrVal que nos daria o valor atual da sequencia.

Depois de termos criado a sequence para a tabela, falarei sobre alguns pontos bons e ruins na sua utilização no dia-dia.

Pontos Bons

- Ajuda na organização dos registros.

- Podemos utilizar uma unica sequence para várias tabelas do banco de dados, economizando tempo e mão-de-obra.

Pontos Ruins

- Caso tenha uma perca de memoria ou uma falha do sistema, o objeto perderá toda numeração sequencial, ficando totalmente inutilizavel.

- Caso você execute o comando DELETE na sua tabela, o número da sequencia que você deleto será pedido, então ficará um "burraco" na sua coluna, pois a sequence não é um auto-incremento que deixará sempre o registro com numeração correta.

Depois de citar o empate tecnico entre os pontos bons e ruins, vamos pensar que você queira ter um controle sobre as Sequences que você criou no banco. Como fazer isso ?

Seus problemas acabaram, pois o maravilhoso Oracle sabe como fazer isso bem facilmente, cada usuário tem seu shema onde é guardada todas as sequences, type, type_methods e etc.. e um simples comando você consegue ver as sequences que estão no seu Shema.

SQL > DESC SYS.USER_SEQUENCES

Ele retornará a descrição resumida da User_Sequence do Shema para você.
Rodrigo Almeida

Rodrigo Almeida