Olá Ken;
É muito provável que a causa dos seus problemas tenha começado com a forma como o DataWindow configurou seus critérios de atualização. O DW Painter por padrão utiliza a opção "Chave e Colunas Atualizáveis" em vez do que sempre sobrescrevo, que é " Chave e Colunas Modificadas ".
A atualização padrão do DW construirá uma declaração DML com uma cláusula Where como C1='Valor1", C2='Valor2", C3='Valor3", ... C99='Valor99" por exemplo. O problema começa a surgir do fato de que o usuário pode ter modificado apenas uma, duas ou três colunas, mas a cláusula Where verifica na base de dados todos os valores antigos possíveis das colunas. Nota: Isso também é uma limitação de desempenho ao verificar todos os valores de dados anteriores também.
Agora, no caso em que você tenha um Trigger de Atualização de BD, o Trigger pode estar modificando, por exemplo, uma coluna "Data_Última_Atualização". Se o Objeto DW também tiver essa coluna em sua lista de atualização e a opção "Chave e Colunas Atualizáveis" estiver em moda, a cláusula Where verifica o valor da coluna "Data_Última_Atualização" como 2015-01-01 13:45:10, mas o Trigger já alterou o valor para 2015-11-30 09:18:46. A verificação WHERE falha e o DW relata o erro "Linha alterada entre recuperação e atualização". Mesmo que o desenvolvedor tenha removido a coluna "Data_Última_Atualização" do detalhe.
Outro cenário poderia ser onde você permite que o valor da coluna da chave primária (ou uma coluna indexada única) seja alterado. O DBMS pode lidar com isso através de uma declaração de atualização DML ou o processamento pode acionar uma sequência de ações DML de EXCLUIR e depois INSERIR. Este último cenário acionando inadvertidamente uma AÇÃO DE TRIGGER DE INSERÇÃO mesmo que uma atualização de DW () esteja em andamento. Neste caso, os valores anteriores a serem verificados na cláusula WHERE são NULL. Novamente, o DW relata o erro "Linha alterada entre recuperação e atualização".
A moral da história, é claro, da sua história é que o desenvolvedor do PB e o DBA devem analisar cuidadosamente as ações em torno do processamento da transação de atualização para determinar as ações de processamento gerais que são realizadas em qualquer momento dado. Os registros do DBMS podem ser cruciais aqui no futuro. Especialmente ao realizar um rastreamento SQL do PB e do DBMS para identificar a causa real do erro "Linha alterada entre recuperação e atualização".
Espero que isso ajude
Cumprimentos .. Chris