Sequence no Oracle
Criando auto-incremento
Por Ricardo Esteves Kneipp e Rodney Cezar de Albuquerque
Neste artigo será apresentado a utilização do comando sequence.
Sequences
Quando uma aplicação necessita utilizar valores numéricos seqüenciais em uma tabela faz-se o uso de sequence. Esses valores são gerados automaticamente pelo oracle. A sintaxe do sequence é mostrada na Listagem 1.
Create sequence nome_da_seqüência
[increment by n]
[start with n]
[maxvalue n | nomaxvalue] or [minvalue n | nominvalue]
[cycle | nocycle]
[cache n | nocache];
Listagem 1. Sintaxe de criação de sequence.
A Tabela 1 descreve cada opção.
Opção |
Descrição |
nome_da_seqüência |
Nome da sequencia, não podendo ser o mesmo de uma tabela ou view |
Increment by n |
Especifica de quanto será o incremento ou decremento. O padrão é 1 |
Start with n |
Especifica o primeiro número a ser gerado. O padrão é 1. |
Maxvalue n |
Especifica o valor máximo que a seqüência gerada pode atingir. O padrão é nomaxvalue, indo até 1027 |
Minvalue n |
Especifica o valor mínimo para as seqüências que estiverem sendo decrementadas. É mutuamente exclusiva ao maxvalue. |
Cycle | nocycle |
Indica que ao atingir o valor máximo a numeração continuará a partir do valor inicial. O default é nocycle. |
Cache n | nocache |
Especifica quantos valores o Oracle pré-aloca e mantém em memória. O padrão é 20. |
Tabela 1. Descrição das opções de criação de sequence.
Criando uma sequence
A Listagem 2 mostra um exemplo de criação de sequence
create sequence idcodcli
increment by 1
start with 10
maxvalue 999
nocycle;
Listagem 2. Exemplo de criação de sequence.
Confirmando a existência de uma sequence
A Figura 1 mostra como confirmar a existência de uma sequence
Figura 1. Select em User_sequences.
Duas pseudocolunas são utilizadas nas sequences: nextval e currval.
Usando o nextval
O nextval retorna o próximo número da seqüência.
A Figura 2 mostra a utilização da pseudocoluna nextval.
Figura 2. insert utilizando o nextval.
Usando o currval
O Currval retorna o valor corrente conforme apresentado na Figura 3.
Figura 3. uso do currval
Para eliminar uma sequence utilizaremos o comando drop.
A Listagem 3 mostra um exemplo da utilização do comando.
drop sequence idcodcli;
Listagem 3. Eliminando uma sequence.
Visualizando a descrição da sequence
Para visualizar a descrição da sequence utilize o comando mostrado na Figura 4.
Figura 4. Descrição detalhada do sequence.
Conclusões
Um sequence apresenta vantagens e desvantagens, conforme abaixo descrito.
Vantagens:
· Pode-se utilizar apenas uma sequence para várias tabelas do banco.
· O sequence ajuda na organização dos registros.
Desvantagens
· Caso haja uma falha no sistema será perdida toda a numeração seqüencial.
· Caso você execute o comando DELETE na sua tabela, o número da sequencia que você deletou será perdido, permanecendo um "burraco" na sua coluna.
(1) Prof. Ricardo E. Kneipp (ricardo.kneipp@gmail.com) é autor de 3 obras na área de informática, inclusive em banco de dados. É graduado em Ciência da Computação-UCP, pós-graduado em Informática na Educação-UFLA e em Gestão Estratégica-UCAM. Realizou curso de certificação Oracle e é Mestrando em Educação-UNIPLI. É Analista de Sistemas e Professor das Universidades UNIG e FAMINAS, nos cursos de graduação e pós-graduação em Biologia, Engenharia da Computação, Sistemas de Informação, Tecnologia de Processamento de Dados e Ciência da Computação. Ministra as Disciplinas: Bioestatística, Banco de Dados, Linguagens de Programação, Projeto Final, Compiladores e Gerenciamento Eletrônico. É membro da SBC (Sociedade Brasileira de Computação).
(2) Prof. Rodney C. de Albuquerque (rodney_albuquerque@hotmail.com) é autor de 3 obras na área de informática, inclusive em banco de dados. É graduado em Tecnologia de Processamento de Dados-UVA, pós-graduado em Redes Locais-UNESA e em Marketing-UCAM. Realizou cursos de certificação Microsoft e é Mestrando em Educação-UNIPLI. É Analista de Sistemas e Professor da Universidade-UNIG nos cursos de graduação e pós-graduação em Enfermagem, Fisioterapia, Educação Física, Engenharia da Computação, Sistemas de Informação, Tecnologia de Processamento de Dados e Ciência da Computação. Ministra as Disciplinas: Informática Aplicada, Bioestatística, Metodologia, Banco de Dados, Linguagens de Programação, Projeto Final, Redes de Computadores, Segurança e Auditoria de Sistemas. É membro da SBC (Sociedade Brasileira de Computação).