Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Otávio 21

UPDATE com JOIN

Recommended Posts

Bom dia galera,
Preciso fazer um Update numa tabela chamada TBLA54_TRACKING, que pega os dados da tabela TBLA41_TRANSITO..
Pesquisando na internet, vi que uma galera faz isso com um subselect, porém o meu está dando erro:
UPDATE 
(SELECT TBLA54_TRACKING.A54_ORDEMDECOMPRA, TBLA41_TRANSITO.A41_ORDEMDECOMPRA,
        TBLA54_TRACKING.A54_CONTACONTABIL, TBLA41_TRANSITO.A41_CONTACONTABIL,
        TBLA54_TRACKING.A54_CODIGODOFORNECEDOR, TBLA41_TRANSITO.A41_CODIGODOFORNECEDOR
FROM TBLA54_TRACKING, TBLA41_TRANSITO
WHERE 
TBLA54_TRACKING.A54_QUANTIDADEDOMATERIAL = TBLA41_TRANSITO.A41_QUANTIDADEDOMATERIAL
AND TBLA54_TRACKING.A54_FATURACONSOLI = TBLA41_TRANSITO.A41_FATURACONSOLI
AND TBLA54_TRACKING.A54_CODIGODOMATERIAL = TBLA41_TRANSITO.A41_CODIGODOMATERIAL
) T
SET
T.A54_ORDEMDECOMPRA = T.A41_ORDEMDECOMPRA,
T.A54_CONTACONTABIL = T.A41_CONTACONTABIL,
T.A54_CODIGODOFORNECEDOR = T.A41_CODIGODOFORNECEDOR

 

Erro de SQL: ORA-01779: não é possível modificar uma coluna que mapeie uma tabela não preservada pela chave
01779. 00000 - "cannot modify a column which maps to a non key-preserved table"
*Cause: An attempt was made to insert or update columns of a join view which map to a non-key-preserved table.
*Action: Modify the underlying base tables directly.
Como posso solucionar este problema ?
Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até onde saiba (11) Oracle não faz Update com join

 

O que eu faço é um bloco para atualizar

 

 

BEGIN
  FOR R IN (SELECT B.CHAVE
            FROM TABELAA A, TABELAB B
            WHERE B.CHAVE = A.CHAVE)
  LOOP
    UPDATE TABELAB SET CAMPO1 = 'X'
    WHERE  TABELAB.CHAVE = R.CHAVE;
  END  LOOP;
END; 

Se já existe uma síntaxe para isto realmente não conheço.

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.