[firebase-br] Erro estranho entre PK e FK

ricardo em vsiinformatica.com.br ricardo em vsiinformatica.com.br
Seg Fev 14 15:31:30 -03 2005


       Olá Marcelo, eu não sei qual é a solução do seu problema, mas tem
certeza que o fato de ser PF e FK não foi intencional ???

       Eu já precisei fazer isso ... por mais estranho que pareça, foi a
melhor solução que achei. No caso a tabela era de PESSOAS. Nesta
tabela tinha um campo "Código_Fornecedor" ... sendo fornecedor um
tipo de pessoa, a PK da tabela também precisava ser FK da mesma.

       Não sei se é comum, errado ou tem solução melhor, mas foi algo que
resolveu um possível problema de integridade e até hoje não deu
problemas !!!!


[]'s

Ricardo Rocha
www.mundodemerlin.pro.br




> Estou aqui com um problema bem estranho.
>
> A algum tempo, um programador no meu time de desenvolvimento cometeu um
> erro e criou um campo que era ao mesmo tempo uma chave primaria e uma
> chave secundaria fazendo referencia *a propria tabela*.
>
> A definição ficou assim:
>
> ALTER TABLE PRODUTOS ADD PRIMARY KEY (COD_PRODUTO);
>
> ALTER TABLE PRODUTOS ADD CONSTRAINT FK_PRODUTO_REQUIS FOREIGN KEY
> (COD_PRODUTO) REFERENCES PRODUTOS (COD_PRODUTO) ON DELETE NO ACTION ON
> UPDATE CASCADE;
>
> Eu vi e erro e apaguei a constraint da chave secundaria errada, essa
> FK_PRODUTO_REQUIS. Até ai tudo bem. Mas agora quando vou em outra tabela
> e tento criar uma chave secundaria que faça referencia a chave primaria
> da tabela PRODUTOS eu recebo um erro:
>
> SQL:
> ALTER TABLE ITEM_PRODUTOS ADD CONSTRAINT FK_ITEM_PRODUTOS FOREIGN KEY
> (COD_PRODUTO) REFERENCES PRODUTOS (COD_PRODUTO) ON DELETE NO ACTION ON
> UPDATE CASCADE;
>
> Erro:
> Cannot commit transaction:
> violation of FOREIGN KEY constraint "".
> violation of FOREIGN KEY constraint "INTEG_865" on table "PRODUTOS".
>
> Sendo que essa constraint INTEG_865 é a constraint que define a chave
> primaria da tabela PRODUTOS.
>
> Alguem sabe como posso corrigir o meu banco para que eu possa criar uma
> chave secundaria que faça referencia a chave primaria da tabela PRODUTOS?
>
> Obrigado pela ajuda!
>
> Marcelo Siqueira
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>






Mais detalhes sobre a lista de discussão lista