GARANTIR DESCONTO

Fórum Erro ao criar uma Chave Estrangeira !!!!! #57828

05/02/2007

0

Já tentei de tudo e não conseguí descobrir o erro :

Acho que estou fazendo de forma errada..

Estou criando uma chave na tabela CA0500 que contem o campo C_COD_OPCAO_RESERVADA que referencia a tabela OP0100 e tem chave primária o mesmo campo

Quando tento criar a chave estrangeira dá o seguinte erro:

can´t format message 13:470 -- message file C:\ARQUIVOS DE PROGRAMAS\HK-SOFTWARE\firebird.msg not found.
violation of FOREIGN KEY constraint "PK_OP0100" on table "OP0100".


será que tô fazendo algo errado???


Cabelo

Cabelo

Responder

Posts

06/02/2007

Emerson Nascimento

ao que parece já há alguma informação gravada no campo C_COD_OPCAO_RESERVADA da tabela principal e que não está gravado na tabela estrangeira.

entendeu?


Responder

Gostei + 0

07/02/2007

Cabelo

Entendí sim.. e era exatamente isso que eu tinha em mente..

mas então como vou criar a chave estrangeira.. já que tenho que criá-la, pois aconteceu um problema esta semana com uma exclusão na tabela..

Como vou criar a chave???


Responder

Gostei + 0

07/02/2007

Emerson Nascimento

você tem duas opções:
- limpa o campo (torna o conteúdo null) cujo valor não existe na tabela estrangeira ou
- adiciona um registro na tabela estrangeira cujo ID seja aquele gravado na tabela principal

depois de executar uma dessas opções você poderá criar a FK sem problema.


Responder

Gostei + 0

07/02/2007

Cabelo

As Tabelas estão enormes...

como vou saber qual o registro que está faltando???

Vê se eu entendí direito..

Preciso verficar na tabela OP0100 os códigos da opções e inserir na tabela CA0500 registros com os códigos que estão faltando certo??

Ou posso excluir os registros da OP0100 que não estiverem em uso..

é isso??


Responder

Gostei + 0

07/02/2007

Emerson Nascimento

1. para saber quais valores precisam ser inseridos na tabela estrangeira:
select
  dinstinct C_COD_OPCAO_RESERVADA
from
  tabela_princial
where
  not C_COD_OPCAO_RESERVADA in
  (select C_COD_OPCAO_RESERVADA from tabela_estrangeira)

com isso serão listados os códigos que estão faltando na tabela estrangeira. de posse desses códigos, faça a inclusão desses registros na tabela estrangeira

ou:
2.
update tabela_principal set
  C_COD_OPCAO_RESERVADA = null
where
  not exists(
    select
      C_COD_OPCAO_RESERVADA
    from
      tabela_estrangeira
    where
      tabela_estrangeira.C_COD_OPCAO_RESERVADA =
      tabela_principal.C_COD_OPCAO_RESERVADA
  )
execute essa instrução para limpar o conteúdo do campo C_COD_OPCAO_RESERVADA caso o mesmo não seja encontrado na tabela estrangeira.

depois de seguida uma dessas opções, tente criar a chave estrangeira.
[b:01e3f17116]lembre de fazer bkp antes efetuar qualquer alteração[/b:01e3f17116].


Responder

Gostei + 0

08/02/2007

Cabelo

Testei exatamente como você sugeriu , das duas formas e não obtive êxito..

O problema persiste...

Tem alguma outra idéia???


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar