Problemas com NULL em chaves estrangeiras

7 respostas
U

Tenho uma tabela Cliente que possui a chave estrangeira CODLOC que referencia a chave primária da tabela de Localidades.

O problema é: Quando eu removo uma localidade, os clientes daquela localidade têm o campo CODLOC setados para NULL. Se eu quiser ler os dados do cliente (Hibernate) um campo do tipo inteiro DEVERIA receber o valor da Localidade, porém, como essa foi setada pra NULL o software trava.

Alguém tem alguma solução pra isso??

Att. Ulisses Nunes

7 Respostas

robinsonbsilva

Boas…

Então, lendo o seu problema, percebe-se que não está havendo integridade alguma, pois, nesse caso a localidade não poderia ser excluida, já que existem clientes que a referenciam.
Se vc definiu a coluna CodLoc na tabela clientes como FOREIGN KEY, referenciando a tabela localidades o SGBD deveria gerar um erro do tipo
“violates foreign key constraint”

Vc poderia criar uma coluna na sua tabela localidade “inativo”, setando para true caso vc o quisesse excluir.

U

O lance é que de acordo com os cadastros podem haver clientes sem localidades, por isso não posso colocar essa constraint.

robinsonbsilva

Havendo a necessidade de cadastrar um cliente sem localidade, vc pode passar para o codloc = null

insert cliente(id_cliente, nome, id_loc) values(100, ‘Robinson’, NULL);

Isso funciona, no Oracle, PostgreSQL, sqlServer…

U

Mas o problema é na hora de ler os dados, pois o hibernate vai tentar ler o inteiro relativo ao código da localidade e acaba encontrando NULL, o que gera um erro e trava o sistema, sacou.

fredferrao

pode criar a constraint sim!!! basta “nao” colocar o campo como not null!!!
eu ja fiz programas assim: tenho uma foreign key que nao é obrigatoria, mas se ela tiver preechida a referencia nao pode ser excluida!!

U

O campo pode ser null, como disse acima o problema é na leitura.

robinsonbsilva

eita…então de uma olhada na documentação do Hibernate, para saber como deve ser tratada a leitura de um campo do tipo int, e quando o mesmo esta NULL…

Não esqueça de postar a solução…

Criado 3 de agosto de 2005
Ultima resposta 3 de ago. de 2005
Respostas 7
Participantes 3