Perguntas UPDATE COM RELACIONAMENTO ORACLE

Mais
9 anos 10 meses atrás #23580 por will3698
Ola boa tarde !

Gostaria de fazer um update relacionando duas tabelas...
em uma versão 10.x do meu oracle eu consegui atraves do código

UPDATE /*+ BYPASS_UJVC */
(SELECT DA1.DA1_PRCVEN ALTERADO,DA1W.DA1_PRCVEN BASE
FROM DA1010 DA1,DA10101W DA1W
WHERE DA1.DA1_CODPRO = DA1W.DA1_CODPRO
AND DA1.D_E_L_E_T_ <> '*'
AND DA1W.D_E_L_E_T_ <> '*'
AND DA1.DA1_CODTAB = '035'
AND DA1.DA1_PRCVEN = 0
AND DA1W.DA1_PRCVEN <> 0
AND DA1W.DA1_CODTAB IN ('029','031','033'))
SET ALTERADO = BASE ;


Entretanto agora estou na versão 11.x, E o comando acima retorna erro :

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.


Fico grato por alguma ajuda

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 10 meses atrás #23585 por luciano.aol
Respondido por luciano.aol no tópico UPDATE COM RELACIONAMENTO ORACLE
William,

Eu espero que esse site lhe ajude.

www.dba-oracle.com/t_ora_01779_cannot_mo...ypreserved_table.htm

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 10 meses atrás #23588 por will3698
Respondido por will3698 no tópico UPDATE COM RELACIONAMENTO ORACLE
Andei estudand hoje sobre esse tipo de processo no Oracle, e acabei desistindo dos meios mais
tradicionais e partindo pra outros meios.
consegui resolver utilizando o procedimento abaixo.

desde já agradeço ao Sr. Luciano pela ajuda !

BEGIN
FOR R IN (SELECT DISTINCT(B.DA1_CODPRO),B.DA1_PRCVEN,B.DA1_CODTAB
FROM DA1010 D, DA10101W B
WHERE B.DA1_CODPRO = D.DA1_CODPRO
AND B.DA1_CODTAB IN ('029')
AND B.DA1_PRCVEN <> 0
AND B.D_E_L_E_T_ <> '*')
LOOP
UPDATE DA1010 SET DA1_PRCVEN = R.DA1_PRCVEN
WHERE DA1_CODPRO = R.DA1_CODPRO
AND DA1_CODTAB = '035';
END LOOP;
END;

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.109 segundos
Joomla templates by a4joomla