Para criar auto-incremento no Oracle temos um objeto chamado SEQUENCE. Esse objeto é um gerador de números sequenciais.
Neste post temos dicas de como usar esse objeto e gerar números sequenciais.
O primeiro passo é criar a nossa sequence, o que pode ser feito com o script:
CREATE SEQUENCE NOME_SEQUENCE MINVALUE valor MAXVALUE valor START WITH valor INCREMENT BY valor NOCACHE/CACHE valor;
A opção CACHE ou NOCACHE determina se a sequence fará uma reserva de números cada vez que for gerado um novo(NEXTVAL). Essa reserva visa otimizar a performance pois esses valores são armazenados na memória, sem necessidade de um novo select na sequence.
Para gerar números com uma sequence basta executar um select na coluna virtual NEXTVAL:
-- Gerar próximo valor da sequencia SELECT NOME_SEQUENCE.nextval FROM dual;
Para obter o valor atual, ou seja o último número gerado na sessão atual, basta executar um select na coluna virtual CURRVAL:
-- Último valor gerado da sequencia, valor atual SELECT NOME_SEQUENCE.currval FROM dual;
Vc também pode usar sequence em comandos como INSERT ou UPDATE:
INSERT INTO tabela (id, nome) VALUES (NOME_SEQUENCE.nextval, 'WILLIANRDG');
Para completar, seguem alguns links (em inglês):
Sequences (Autonumber) – http://www.techonthenet.com/oracle/sequences.php
Sequence Pseudocolumns – http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns002.htm