[firebase-br] Erro de FK

Cristiano Rebonatto crebonatto em upf.br
Qua Nov 23 10:50:29 -03 2005


Isso ae !!!! O IBEXepert faz alguma coisa ou tem alguma configuração que 
o vazio ele não entendo como null..
Faz o seguinte teste, no GRID Data, bem embaixo na direita tem umas abas 
e uma delas é FORM VIEW clica nela e no check box NULL clica nele e 
grava vamos ver se funciona....
Bem, acho q seu problema está resolvido, vc descobriu que o Firebird faz 
como o oracle é a ferramente que trata de maneira diferente...


tulio roversi escreveu:

>Se eu der um update na janela do SQL da certo, mas no  grid de dados da pau.
>
>Cristiano Rebonatto <crebonatto em upf.br> escreveu:  Vc está executando o UPDADE no ibextpert na janela do SQL ou vc está na 
>parte de manutenção nos dados da tabela !!!!?????
>
>tulio roversi escreveu:
>
>  
>
>>Cristiano,
>> 
>> O erro q acontece e referente a opcao 2: naum consigo setar NULL para o  campo CDTIPOCARTAO na tabela CLIENTE. Ele naum eh PK nem NOT NULL.  Estou fazendo o teste na propria tabela pelo IBExpert portanto naum eh  minha aplicacao. Q pode ser?
>> Erro: violation of Foreign Key constraint...
>> vlw.
>>
>>Cristiano Rebonatto  escreveu:  Vou me meter  nessa !
>>
>>Não sei se entendi direito, mas vou tentar contribuir com 2 sugestões.
>>
>>1)  Não sei se é bem isso :
>>Pelo que entendi vc quer mesmo que quando exista um relacionamento(uma 
>>FK entre a tabela cliente e tipocartao) e este seja excluído na tabela 
>>pai (tipocartao) a coluna CDTIPOCARTAO na tabela cliente seja atualizada 
>>com  o valor NULL ?
>>Bem se for isso vc pode tentar criar a FK com a opcao ON DELETE SET NULL.
>>
>>alter table cliente add constraint FK_CODTIPOCARTAO   foreign 
>>key(cdtipocartao)  references TIPOCARTAO(cdtipocartao) on delete set null
>>
>>
>>2) Vc consegue tranquilamente setar NULL para o campo codtipocartao na 
>>tabela cliente A NÃO SER QUE VOCÊ o tenha definido com NOT NULL ou então 
>>se ele fizer parte da sua PK da sua tabela cliente.Que pela jeito não é 
>>o seu caso
>> O NULL não é valor então a FK não é validada nessa situação. Agora se 
>>você colocar uma valor nela, ele obrigatoriamente vai ter que existir na 
>>tabela pai.
>>
>>Que erro você está recebendo que não está conseguindo executar essa ação ?
>>
>>
>>
>>
>>
>>
>>
>>tulio roversi escreveu:
>>
>> 
>>
>>    
>>
>>>ola RedDevil e os demais,
>>>
>>> pode deixar q naum faço mais essas perguntas indiscretas. Quanto ao  erro vou explicar melhor pois o mesmo nao acontece no Oracle.
>>>Exemplo:
>>>
>>>tabela:  CLIENTE                                     TIPOCARTAO
>>>PK  CDCLIENTE                             PK  CDTIPOCARTAO    
>>>      NMCLIENTE                                   NMTIPOCARTAO
>>>FK   CDTIPOCARTAO NULL
>>>
>>> Se uma vez eu cadastro um cliente e informo um tipo de cartao para ele,  naum posso mais apagar seu tipo de cartao (no registro da tabela  cliente)? Tah claro?
>>>
>>>[]´s, Tulio.
>>>
>>>RedDevil  escreveu:  ola Tulio,
>>>
>>>
>>>Post By tulio roversi:
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>bom dia pessoal,
>>>> alguem sabe seh eh possivel fazer com q o firebird ignore o erro de FK  qndo apago o conteudo de um campo q eh do tipo null referente a FK em  um registro de uma tabela? Deu pra entender?
>>>>vlw.
>>>>Tulio.
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>esta ja eh a segunda vez que voce posta essa mesma pergunta...
>>>
>>>eu acho que ninguem respondeu ainda devido ao que voce escreveu: "deu 
>>>para entender?"...
>>>
>>>ninguem quer admitir que entendeu...
>>>;o)
>>>
>>>eu tambem nao entendi (ou entendi sem dar...;o), mas ate onde eu sei (o 
>>>que nao eh muita coisa...;o), nao existe uma maneira de fazer isso sem 
>>>excluir a FK...
>>>
>>>
>>>[]s
>>>força sempre!!!
>>>ate +++
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>> 
>>
>>    
>>
>
>  
>

-- 
+-----------------------------------------------------------+
 Cristiano Rebonatto 
 Setor de Análise e Desenvolvimento             
 Divisão de Tecnologia da Informação 
 Universidade de Passo Fundo
 Passo Fundo - RS
+-----------------------------------------------------------+




Mais detalhes sobre a lista de discussão lista