terça-feira, 16 de dezembro de 2008

Criando Tabela com Campo PK Auto Incremento

Este metodo de criacao de tabela existe aos montes na internet, porem este codigo SQL virou padrao para a criacao das minhas tabelas no Oracle 10g que tenham um campo chave primaria auto incrementavel.

Codigo SQL :
-- cria tabela
create table DBTABELA
(
CODCAMPOAUTO NUMBER not null,
CAMPOTEXTO VARCHAR2(9),
CAMPONUMERO NUMBER(10,2),
CONSTRAINT PKCODCAMPOAUTO PRIMARY KEY (CODCAMPOAUTO)
);
-- cria sequence
create sequence CODCAMPOAUTO_SEQ;

-- isto evita que ocorra saltos na contagem do "proximo"
-- existe este erro no Oracle 10g nao sei pq :S
alter sequence CODCAMPOAUTO_SEQ NOCACHE;

-- cria trigger que efetua a operacao de auto incremento
create OR replace trigger trg_bi_DBTABELA
before insert on DBTABELA
for each row
begin
if :new.CODCAMPOAUTO is null then
select CODCAMPOAUTO_SEQ.nextval
into :new.CODCAMPOAUTO
from dual;
end if;
end;

3 comentários:

  1. Olá, muito obrigada pelo post, estava quebrando a cabeça e não conseguia que o auto incremento funciona de jeito nenhum e dessa forma, funcionou de primeira. ;)

    ResponderExcluir
  2. Muito Bom.

    Obrigado. Estava com dúvidas, mas deu certo.

    Aproveitando...
    Gente,
    Eu fiz um curso na Impacta e foi de muito bom proveito e aprendizado.

    Entrei no curso sabendo apenas o básico, agora que acabei estou muito mais preparado para o mercado de trabalho.

    Recomendo a todos.

    Segue link do curso. http://www.impacta.com.br/curso/Oracle-11g-Introduction-to-SQL.php

    Espero ter dado dicas.

    Abraços!

    ResponderExcluir