Jump to content

dev botao

Erro ao criar FK em tabela relacional Firebird 2.1


Edevair Viesa Junior
  • Este tópico foi criado há 2575 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Pessoal boa tarde.

Estou criando uma cheve estrangeria em uma tabela que já possui dados.

O erro retornado pelo firebird :

Citar

---------- STATEMENT ----------

alter table PE0100
add constraint FK_PE0100_4
foreign key (C_COD_EMPRESA,C_COD_CLIENTE)
references CC0100(C_COD_EMPRESA,C_COD_CLIENTE)


---------- ERROR MESSAGE ----------

violation of FOREIGN KEY constraint "".
violation of FOREIGN KEY constraint "PK_CC0100" on table "CC0100".
Foreign key reference target does not exist.
 

Porém já fiz o seguinte select :

Citar

select C_COD_PEDIDO, C_COD_CLIENTE, C_FONE1_CLIENTE, C_DATA_PEDIDO, C_PEDIDO_FECHADO, C_COD_OPERADOR
from PE0100
where C_COD_CLIENTE not in (select C_COD_CLIENTE from CC0100)

E não traz nenhum registro, pois não há referências em aberto entre elas.

Alguém já passou por uma situação dessas ?

Muito Obrigado desde já.

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores

A chave que você está criando é composta. Não deveria testar os dois valores no seu select?

1 hora atrás, Edevair Viesa Junior disse:

(C_COD_EMPRESA,C_COD_CLIENTE)

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
34 minutos atrás, EMBarbosa disse:

A chave que você está criando é composta. Não deveria testar os dois valores no seu select?

 

EMBarbosa, primeiramente obrigado pela resposta.

Em relação ao tópico, respondendo sua pergunta, poderia ser se no caso houvesse mais de uma empresa cadastrada no sistema, percorri todo o conteúdo de PE0100 e não tem nenhuma empresa a não ser a '001'

Porém pra desencargo de consciência eu rodei o seguinte select :

Citar

select C_COD_PEDIDO, C_COD_CLIENTE, C_FONE1_CLIENTE, C_DATA_PEDIDO, C_PEDIDO_FECHADO, C_COD_OPERADOR
from PE0100
where C_COD_CLIENTE not in (select C_COD_CLIENTE from CC0100) or C_COD_EMPRESA not in (select C_COD_EMPRESA from CC0100)

O mesmo também não retornou registros.

Ou deveria fazer outro select ?

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores
41 minutos atrás, Edevair Viesa Junior disse:

Ou deveria fazer outro select ?

Pelo que me parece, deveria ser outro select. O cliente deve existir na mesma empresa.

algo como:

select C_COD_PEDIDO, C_COD_CLIENTE, C_FONE1_CLIENTE, C_DATA_PEDIDO, C_PEDIDO_FECHADO, C_COD_OPERADOR
from PE0100 P
where not exists (select 1 from CC0100 C where (C.C_COD_CLIENTE = P.C_COD_CLIENTE) and (C.C_COD_EMPRESA = P.C_COD_EMPRESA))

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
2 minutos atrás, EMBarbosa disse:

Pelo que me parece, deveria ser outro select. O cliente deve existir na mesma empresa.

algo como:


select C_COD_PEDIDO, C_COD_CLIENTE, C_FONE1_CLIENTE, C_DATA_PEDIDO, C_PEDIDO_FECHADO, C_COD_OPERADOR
from PE0100 P
where not exists (select 1 from CC0100 C where (C.C_COD_CLIENTE = P.C_COD_CLIENTE) and (C.C_COD_EMPRESA = P.C_COD_EMPRESA))

 

Verdade, mesmo assim não retorna nenhum registro...

Deveria passar tranquilamente o FK não ??

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores

Parece, mas não estou certo.

Pode ser que tenha algum problema nos índices e o registro não está sendo exibido.

Pode ser que tenha alguma inconsistência na tabela CC0100 (já que a PK dela é mencionada no erro: violation of FOREIGN KEY constraint "PK_CC0100" on table "CC0100" ).

E parece que podem ser registros visíveis a outras transações. Nesse caso, você teria que colocar o banco offline ou reiniciar o servidor.

 

  • Thanks 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
Em 25/08/2017 at 17:58, EMBarbosa disse:

Parece, mas não estou certo.

Pode ser que tenha algum problema nos índices e o registro não está sendo exibido.

Pode ser que tenha alguma inconsistência na tabela CC0100 (já que a PK dela é mencionada no erro: violation of FOREIGN KEY constraint "PK_CC0100" on table "CC0100" ).

E parece que podem ser registros visíveis a outras transações. Nesse caso, você teria que colocar o banco offline ou reiniciar o servidor.

 

Perfeito EMBarbosa...

Foi só reiniciar o servidor que funcionou...

Muito Obrigado !!

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores
6 horas atrás, Edevair Viesa Junior disse:

Perfeito EMBarbosa...

Foi só reiniciar o servidor que funcionou...

Muito Obrigado !!

De nada. Obrigado pelo retorno. :geek:

  • Thanks 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Este tópico foi criado há 2575 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.