Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #100213
    Avatar de italocloneitaloclone
    Participante

      Tenho que alterar um numero que o usuario cadastrou errado e o sistema jogou em varios lugares.

      levantei todas as tabelas que vao ter que ser alteradas, porem estou sendo barrado por


      Erro ao iniciar na linha 2 no comando
      UPDATE TGFECF SET CODMAQ = 35 WHERE CODMAQ = 14 AND DTMOV >= '27/07/2001'
      Relatório de erro:
      Erro de SQL: ORA-02291: restrição de integridade (WTGOI2.FK_TGFECF_CODMAQ_TGFMAQ) violada - chave mãe não localizada
      02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
      *Cause: A foreign key value has no matching primary key value.
      *Action: Delete the foreign key or add a matching primary key.

      Como transpor isso, sendo que eu tenho que atualizar a mae tambem??

      #100214
      Avatar de italocloneitaloclone
      Participante


        ORA-02292: restrição de integridade (WTGOI2.FK_TGFECF_CODMAQ_TGFMAQ) violada - registro filho localizado

        #100215
        Avatar de rmanrman
        Participante

          [quote=”italoclone”:1pvu5y9b]Tenho que alterar um numero que o usuario cadastrou errado e o sistema jogou em varios lugares.

          levantei todas as tabelas que vao ter que ser alteradas, porem estou sendo barrado por


          Erro ao iniciar na linha 2 no comando
          UPDATE TGFECF SET CODMAQ = 35 WHERE CODMAQ = 14 AND DTMOV >= '27/07/2001'
          Relatório de erro:
          Erro de SQL: ORA-02291: restrição de integridade (WTGOI2.FK_TGFECF_CODMAQ_TGFMAQ) violada - chave mãe não localizada
          02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
          *Cause: A foreign key value has no matching primary key value.
          *Action: Delete the foreign key or add a matching primary key.

          Como transpor isso, sendo que eu tenho que atualizar a mae tambem??[/quote]

          É o seguinte, você vai ter que usar um pai emprestado temporariamente, a lógica é a seguinte:

          1 – Crie o pai com sua pk com um valor determinado, por exemplo 9999.
          2 – Associe todos os filhos neste pai emprestado.
          3 – Mude a pk do pai verdadeiro para o novo valor.
          4 – Associe todos os filhos do pai emprestado para o pai verdadeiro.
          5 – Delete o pai emprestado.

          #100216
          Avatar de IshiiIshii
          Participante

            Olá,

            Se a sua versão do Oracle for 9 ou superior sugiro usar o Merge (dê uma olhada na documentação da Oracle) .

            []s Ishii

            #100219
            Avatar de italocloneitaloclone
            Participante

              [quote=”rman”:254mws2r][quote=”italoclone”:254mws2r]Tenho que alterar um numero que o usuario cadastrou errado e o sistema jogou em varios lugares.

              levantei todas as tabelas que vao ter que ser alteradas, porem estou sendo barrado por


              Erro ao iniciar na linha 2 no comando
              UPDATE TGFECF SET CODMAQ = 35 WHERE CODMAQ = 14 AND DTMOV >= '27/07/2001'
              Relatório de erro:
              Erro de SQL: ORA-02291: restrição de integridade (WTGOI2.FK_TGFECF_CODMAQ_TGFMAQ) violada - chave mãe não localizada
              02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
              *Cause: A foreign key value has no matching primary key value.
              *Action: Delete the foreign key or add a matching primary key.

              Como transpor isso, sendo que eu tenho que atualizar a mae tambem??[/quote]

              É o seguinte, você vai ter que usar um pai emprestado temporariamente, a lógica é a seguinte:

              1 – Crie o pai com sua pk com um valor determinado, por exemplo 9999.
              2 – Associe todos os filhos neste pai emprestado.
              3 – Mude a pk do pai verdadeiro para o novo valor.
              4 – Associe todos os filhos do pai emprestado para o pai verdadeiro.
              5 – Delete o pai emprestado.[/quote]

              meu nivel é muito baixo,

              como eu vou associar todos os filhos ao pai emprestado (comando)?

              e se em vez disso eu criar um pai novo com a pk que eu quero, pq é justamente a pk que esta errada?

              Oralce 10g

              #100224
              Avatar de rmanrman
              Participante

                Sim pode ser feito da forma que você disse.

                Para associar o filho ao novo pai, basta dar um UPDATE trocando o valor do pai na tabela filha. Sabe fazer o UPDATE ?

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress