Ola Carla, o Oracle nao possui campo autoincrement, na verdade o que existe eh uma
sequence.
Com a sequence vc pode trabalhar de duas maneiras:
1) fazer um select na sequence antes para pegar o proximo numero, depois vc utiliza
esse id em um insert, o
select fica mais ou menos assim:
select nomeDaSequence.nextVal as proximoId
2) no proprio insert vc chama nextVal, assim:
insert into contatos (id, nome, telefone) values (nomeDaSequence.nextVal, 'jose',
'555-5555')
Em um primeiro momento parece uma bobeira, porque a Oracle fez isso? Mas a
possibilidade de se ter o id antes
da insercao eh maravilhosa, por exemplo:
muitas vezes em um cadastro vc precisa inserir dados em varias tabelas em uma mesma
transacao, so que
existem relacionamentos entre elas, como vc faz para saber qual foi o ultimo
autonumeracao inserido em uma
determinada tabela? Cada RDBMS possiblita uma maneira, so que infelizmente muita gente
faz um select max(id)
na coluna da pk, o que em um mundo de acesso concorrente eh loucura.
Abraco,
Claudio
claudio.com.br
On Fri, 10 Jan 2003 09:41:44 -0300, "Carla Ribeiro" <[EMAIL PROTECTED]> escreveu :
> De: "Carla Ribeiro" <[EMAIL PROTECTED]>
> Data: Fri, 10 Jan 2003 09:41:44 -0300
> Para: <[EMAIL PROTECTED]>
> Assunto: [enterprise-list] Nao pode inserir nulo
>
> Ola Pessoal,
>
> Estou tendo problemas com uma aplicacao que acessa o banco de dados Oracle
> O problema eh quando tento inserir alguma linha, onde nessa linha existe um
> campo autoincrement..
>
> A mensagem que ocorre:
> n�o � poss�vel inserir NULL em ("nomebanco"."nometabela"."ID")
>
> Alguem ja teve esse problema e poderia me dar uma ajuda?
>
> Atenciosamente,
> Carla
>
>
> ---------------------------------------------------------------------
> Para cancelar a subscri��o, envie mensagem para:
>[EMAIL PROTECTED]
> Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]
>
>
>
>
---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para:
[EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]