Hola Ken;
Lo más probable es que la causa de tus problemas haya comenzado con la forma en que el DataWindow configuró sus criterios de actualización. El DW Painter por defecto utiliza la opción "Clave y Columnas Actualizables" en lugar de lo que siempre sobrescribo, que es " Clave y Columnas Modificadas ".
La actualización predeterminada de DW construirá una declaración DML con una cláusula Where como C1='Valor1", C2='Valor2", C3='Valor3", ... C99='Valor99" por ejemplo. El problema comienza a surgir del hecho de que el usuario puede haber modificado solo una, dos o tres columnas, pero la cláusula Where verifica en la base de datos todos los valores antiguos posibles de las columnas. Nota: Esto también es una limitación de rendimiento al verificar todos los valores de datos anteriores también.
Ahora, en el caso en el que tengas un Desencadenador de Actualización de BD, el Desencadenador podría estar modificando, por ejemplo, una columna "Fecha_Última_Actualización". Si el Objeto DW también tiene esta columna en su lista de actualización y la opción "Clave y Columnas Actualizables" está de moda, la cláusula Where verifica el valor de la columna "Fecha_Última_Actualización" como 2015-01-01 13:45:10 pero el Desencadenador ya ha cambiado el valor a 2015-11-30 09:18:46. La verificación WHERE falla y el DW informa el error "Fila cambiada entre recuperación y actualización". Aunque el desarrollador haya eliminado la columna "Fecha_Última_Actualización" del detalle.
Otro escenario podría ser donde permites que cambie el valor de la columna de clave primaria (o una columna indexada única). El DBMS puede manejar esto a través de una declaración de actualización DML o el procesamiento puede desencadenar una secuencia de acciones DML de ELIMINAR y luego INSERTAR. Este último escenario desencadenando inadvertidamente una ACCIÓN DE TRIGGER DE INSERCIÓN aunque una actualización de DW () esté en progreso. En este caso, los valores anteriores a ser verificados en la cláusula WHERE son NULL. Nuevamente, el DW informa el error "Fila cambiada entre recuperación y actualización".
La moraleja, por supuesto, de tu historia es que el desarrollador de PB y el DBA deben analizar cuidadosamente las acciones en torno al procesamiento de la transacción de actualización para determinar las acciones de procesamiento general que se realizan en cualquier momento dado. Los registros del DBMS pueden ser clave aquí en el futuro. Especialmente cuando se realiza un rastreo SQL desde PB y la DBMS para acotar la causa real del error "Fila cambiada entre recuperación y actualización".
Espero que esto ayude
Saludos .. Chris