- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 5 meses atrás por rman.
-
AutorPosts
-
4 de agosto de 2011 às 12:46 am #100213italocloneParticipante
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??
4 de agosto de 2011 às 12:48 am #100214italocloneParticipante
ORA-02292: restrição de integridade (WTGOI2.FK_TGFECF_CODMAQ_TGFMAQ) violada - registro filho localizado4 de agosto de 2011 às 1:10 am #100215rmanParticipante[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.4 de agosto de 2011 às 3:10 am #100216IshiiParticipanteOlá,
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
4 de agosto de 2011 às 3:20 pm #100219italocloneParticipante[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
4 de agosto de 2011 às 8:45 pm #100224rmanParticipanteSim 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 ?
-
AutorPosts
- Você deve fazer login para responder a este tópico.