GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Coluna com Auto Incremento

Visitando o fórum hoje, vi uma pergunta que sempre aparece, que são as dúvidas de muitos iniciantes no mundo Oracle que trabalham com outros bancos de dados sobre os campos auto incrementais. Até o momento a Oracle não disponibiliza uma solução como outros bancos de dados, mas é possível criar uma solução.

Como já havia dado uma dica para um amigo a respeito desse assunto, resolvi guardá-lo.

A solução encontrada é a utilização de uma sequence e uma trigger que vai fazer o trabalho de incrementar o campo.

Procedimento para criar um campo auto incremental.

1) Criar uma tabela

SQL> create table t1 (cod number primary key, text varchar2(50));
Tabela criada.

2) Criar uma sequence

SQL> create sequence sq_t1cod start with 1 increment by 1;

Sequencia criada.

3) Criar uma trigger que usa a sequence

SQL> create trigger tg_t1cod
2 before insert on t1
3 for each row
4 begin
5 select sq_t1cod.nextval into :new.cod from dual;
6 end;
7 /

Gatilho criado.

4. Testar

SQL> insert into t1 (text) values ('primeiro registro');
1 linha criada.

SQL> insert into t1 (text) values ('segundo registro');
1 linha criada.

SQL> commit;

Commit concluido.

SQL> select * from t1;

COD TEXT
---------- -----------------------
1 primeiro registro
2 segundo registro

2 linhas selecionadas.
Share

You may also like...

3 Responses

  1. Vitor Leandro disse:

    Interessante Solução!

  2. Gustavo disse:

    Grande Braga!

  3. Adriano disse:

    Valeu meu brother,queria fazer um ETL desabilitando os constraints ,mas com essa solução não vou precisar mais desabilitar,testei aqui deu certo.
    Muito obrigado.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *