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.
Interessante Solução!
Grande Braga!
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.