Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deh

foreign key

Recommended Posts

Pessoal, estou com um enorme de um projeto em cima de SQL. Porém, tenho encontrado um problema sério de chave estrangeira. Vejamos se alguém consegue me ajudar:Tenho uma tabela USUARIOS e uma tabela PASTAS, na tabela PASTAS tenho uma coluna chamada RESPONSAVEL1 e uma coluna RESPONSAVEL2. Estas colunas de responsavel eu gostaria de referenciar com a chave primaria da tabela USUARIOS, e gostaria de usar as opcoes de Cascade Update e Cascade Delete. Só que ao tentar criar as duas chaves estrangeiras, o SQL acusa erro de referencia circular. Alguém poderia me ajudar no que estou fazendo errado? Ou isto é comportamento padrão e não tem jeito mesmo?Abraçao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ninguém faz idéia? Dei uma buscada no Google mas não achei nada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cara,Eu tenho uma esquema parecido aqui, onde quase todas as tabelas tem referencia com a tabela de operadores.Ao invés de usar FK declarada, uso implicitamente e quando quero um tratamento cascade eu faço por trigger, acho que fica mais leve (apesar de perder os indexes).Acho que dessa forma funcionaria.

CREATE TABLE PASTAS(COD_PASTA INT, COD_RESP1 CHAR(4), COD_RESP2 CHAR(4),FOREIGN KEY(COD_RESP1) REFERENCES USUARIOS(COD_USUA),FOREIGN KEY(COD_RESP2) REFERENCES USUARIOS(COD_USUA))

Tentou assim?Abraços.Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei sim, desta forma ele cria tranquilo a referencia! Mas não deixa marcar a opcao de CASCADE UPDATE para as duas chaves, somente para uma!Gostaria que quando mudasse o codigo do usuario, alterasse junto na tabela de pastas onde ele é algum dos responsaveis!Tem alguma outra idéia?Mas, obrigado pela força!!abraçao

Compartilhar este post


Link para o post
Compartilhar em outros sites

velho... eu vejo ai um problema na modelagem da base... o certo seria você ter outra tabela... pq uma pasta pode ter + de um responsável.. então seria akela mardita "muitos para muitos"1. usuario ( idusuario, nome, endereco, etc...)2. pasta (idpasta, descricao, etc)3. pasta_usuario (idusuario, idpasta) sendo q os 2 juntos formariam um primarykey desta tabela e seriam relacionadas com as demais (estrangeira) ai sim você teria as opções de CASCATE UPDATE...;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ska_ska, da forma que você falou realmente iria funcionar!Galera, valeu pela força, acabei falando com o cliente e ele mudou algumas tabelas (esta junto), então resolvi heheheAbraçao

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.