terça-feira, março 15, 2005

Oracle – Trabalhando com campos auto-incremental

O campo auto-incremental é o campo um campo numérico onde o valor é gerado automaticamente a partir de algumas informações.
No Oracle, este campo é conhecido como SEQUENCE.
Para trabalhar com este campo no Oracle, devemos seguir os seguintes passos:

1) Criar a tabela com um campo numérico, que será utilizado como auto incremental
create table ATUALIZACAO_LOG
(
SEQ_LOG NUMBER not null,
COD_EMPRESA NUMBER(5) not null,
COD_TELA NUMBER(38) not null,
CHAVE VARCHAR2(300) not null,
INICIO DATE not null,
FIM DATE null ,
TIP_LOG CHAR(1) not null
constraint CKC_TIP_LOG_LOG check (TIP_LOG in ('I','A','E','P')),
SIGLA_USUARIO VARCHAR2(20) not null,
HISTORICO VARCHAR2(300) not null,
constraint PK_ATUALIZACAO_LOG primary key (SEQ_LOG)
)
/
2) Definir um objeto do tipo SEQUENCE, com as suas configurações
CREATE SEQUENCE SEQ_ATUALIZACAO_LOG
START WITH 1
INCREMENT BY 1
NOMINVALUE
NOMAXVALUE
NOCYCLE
CACHE 20
NOORDER
/
Onde:
START WITH : Posição inicial
INCREMENT BY : Valor a ser incrementado.
3) Gerar o próximo valor

select SEQ_ATUALIZACAO_TELA.nextval
into Proximo_valor
from dual

4) Incluir na tabela

insert into ATUALIZACAO_LOG values(Proximo_valor, cod_empresa, cod_tela, upper(:as_chave), dt_now, dt_now, tip_log, upper(sigla_usuario), upper(historico) )

Um comentário:

Anônimo disse...

Você citou nomes diferentes para a mesma sequence: seq_atualizacao_log e seq_atualizacao_tela.