Segunda-feira, 30 de setembro de 2002 às 01h59

Objeto Sequence do Oracle

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.


Olá Pessoal,

Tenho recebido muitos e-mails falando de como utilizar o objeto Sequence do Oracle, por está razão resolvi falar com detalhes e relatar os pontos bons e ruins dele.

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. Utilizamos 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.

Abaixo se tem 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
4
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 utilizalá, e para isso basta você incluir o sequence dentro do seu comando Insert, veja o exemplo :

SQL >
INSERT INTO IMASTERS (CODIGO, NOME, EMAIL, SITE)
2
VALUES (ALPHAMEK.NextVal,'RODRIGO', 'rodrigo@noreal.com','www.noreal.com.br');

A linha acima foi incluida com sucesso, mas percebe 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, irei falar 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 irá ter retorna a descrição resumida da User_Sequence do Shema para você.

Um Abraço pessoal!

1 comentário

 Fernando Fonseca
17/05/2004 17h14

EXEPTION

AEW, acho que podia aparece alguma coisa sobre eception alem de util eu n sei usa muito bem hehehe falow

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Rodrigo Almeida formando em analise de banco de dados pela IBTA-SP, especialista em microeletrônica pela INSA-AIME na França e Oracle Certified Associate 9i. Já trabalhou em empresas como BTC Texaco, DuPont do Brasil, Vivo São Paulo, Procwork, DBACorp e atualmente é DBA Oracle da Affinia Automotiva.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.