Fórum Dois Campos na Chave Estrangeira #54718
13/01/2006
0
Tenho uma tabela Setor, uma tabela Cargo e uma tabela Funcionário.
_________ _________ _________ | | | | | | | SETOR |<--| CARGO |<--|FUNCION. | |_________| |_________| |_________| idsetor idsetor (idsetor) idcargo (idcargo)
A tabela Setor tem o campo IDSetor como chave primária.
A tabela Cargo tem os campos IDSetor e IDCargo como chave primária.
O campo IDSetor da tabela Cargo faz chave primária com o campo IDSetor da tabela Setor.
Eu queria que os campos IDSetor e IDCargo da tabela de Funcionários fizessem chave primária com os campos IDSetor e IDCargo da tabela Cargo, mas não consigo.
Eu tentei executar o seguinte código:
alter table FUNCIONARIO add constraint FK_FUNCIONARIO_1 foreign key (IDSETOR,IDCARGO) references CARGO(IDCARGO,IDSETOR);
Mas o Firebird retorna uma mensagem dizendo que esse comando viola a chave primária da tabela CARGO(idsetor,idcargo):
/*******************************************************************************
The next statement causes the following error:
violation of FOREIGN KEY constraint ´´.
violation of FOREIGN KEY constraint ´PK_CARGO´ on table ´CARGO´.
*******************************************************************************/
Não estou entendendo. Qual é o problema?
Mordred
Curtir tópico
+ 0Posts
13/01/2006
Thomaz_prg
Gostei + 0
15/01/2006
Raserafim
sugestão: apague todos os registros e tente novamente da forma como vc está fazendo. e observe o q o colega falou, q isto tb acontece muito, principalmente quando é alguma alteração na tabela.
Gostei + 0
17/01/2006
Xtreme
alter table FUNCIONARIO add constraint FK_FUNCIONARIO_1 foreign key (IDSETOR,IDCARGO) references CARGO(IDCARGO,IDSETOR);
Vc deve seguir a ordem correta ao que me parece a ordem no teu sql esta invertida, o correto seria assim
alter table FUNCIONARIO add constraint FK_FUNCIONARIO_1 foreign key (IDSETOR,IDCARGO) references CARGO([b]IDSETOR,IDCARGO[/b]);
caso realmente seja isto! Tenta ai e ve se roda!
Gostei + 0
23/01/2006
Mordred
Valeu mesmo, galera!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)