Sequences

Transcrição

Sequences
Pedro F. Carvalho
Analista de Sistemas
[email protected]
Este objeto é utilizado dentro do banco de dados para fazer uma especie de "autoincremento", 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 :
SQLINSERT INTO IMASTERS (CODIGO, NOME,
> EMAIL, SITE)
VALUES (ALPHAMEK.NextVal,'RODRIGO',
2
'[email protected]','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.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
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ê.
Na minha opnião particular, uma tabela com poucas inserções faremos o count = count
+ 1 e em uma tabela que havéra muitas inserções ou importações, usamos o
sequence.

Documentos relacionados

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW Hash etc. • O uso de índices degrada a performance de operações de inserção, deleção e atualização de tabelas, pois nestas operações os índices deverão ser atualizados. • Para uma melhor performanc...

Leia mais