- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Banco de Dados
- UPDATE COM RELACIONAMENTO ORACLE
Perguntas UPDATE COM RELACIONAMENTO ORACLE
- will3698
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
10 anos 5 meses atrás #23580
por will3698
UPDATE COM RELACIONAMENTO ORACLE foi criado 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
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.
- luciano.aol
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 4
- Obrigados Recebidos: 0
10 anos 5 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
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.
- will3698
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
10 anos 5 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;
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.
- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Banco de Dados
- UPDATE COM RELACIONAMENTO ORACLE
Tempo para a criação da página:0.128 segundos