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.

3 comentários em “Coluna com Auto Incremento”

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

    Responder

Deixe um comentário

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detectado !

Verificamos que está usando alguma extensão para bloquear os anúncios. O GPO (Grupo de Profissionais Oracle) obtém a sua renda através dos anúncios, para assim manter toda a estrutura dedicada a universalização do conhecimento.

Se você gosta de nosso trabalho, pedimos por gentileza que desabilite o ads blocker. Trabalhamos somente com o Google Adsense e tentamos ao máximo exibir apenas o necessário.

Agradecemos de antemão ! :)

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock