Array
(
)

Atualizar tabela baseada em outra

Pjava
   - 08 ago 2011

Tenho duas tabelas. OPERA e CARGA. O campo Data_Conhecimento da tabela Carga está errado. O Campo Data da tabela OPERA está correto. A correlação existente entre as duas tabelas(Não é FK, porque elas estão em bancos diferentes, por isso copiamos as duas tabelas para um banco TEMP para corrigir) é o Campo CONTRATO na tabela OPERA e CONHECIMENTO na tabela CARGA. Logo, eu criei dois cursores(não sei se é necessário), um para trazer o Contrato e o outro para trazer o Conhecimento. A dúvida é como dar um while em um ou outro para ir dando Update na tabela Carga, baseada na informação no momento na tabela Opera. Eu tenho mais de 10.000.000 de registros em ambas. É um processo lento, tanto que no selct dá time out ou sem memória. Aproveito para perguntar como eu faço um select sem dá time out.

Marco Pinheiro
   - 08 ago 2011

Se entendi vc quer fazer algo + ou - assim:

UPDATE CARGA SET DATA = OPERA.DATA
FROM OPERA
WHERE CARGA.CONHECIMENTO = OPERA.CONTRATO

Você pode criar indices nas duas tabelas para fazer com mais rapidez.

Att.,

Marco.

Pjava
   - 08 ago 2011

Eu havia feito o update. A idéia do Cursor era apenas, que em algumas situações, iria receber um tratamento diferente, para um tipo específico de contrato, mas convencemos o cliente que isso era desnecessário e ele acatou nossa sugestão, logo um puro e simplewes update resolve. Estou com esse erro no meu update. Fiz um update(uma linha apenas) só para testar e depois fazer em todos os registros que possuem a anomalia(Data 1899-12-30), são essas data que devem ser atualizadas. O Update abaixo não funfa, porque?  

update

conhecimento_carga

set

data_emissao_conhecimento

Marco Pinheiro
   - 09 ago 2011

O update dá erro ou não altera os dados corretamente?

Tente assim:

update

conhecimento_carga

set

data_emissao_conhecimento