tengo esquema de base de datos para un proyecto de integración en el que tengo que ser capaz de consultar para los registros que tienen cambió, pero sólo basado en una dado conjunto de campos dentro de ese registro.La implementación de un hash de registro de base de datos para hacer el seguimiento de si un registro ha cambiado o no
Así, por ejemplo, he aquí una tabla de ejemplo:
CLIENTES
- ID
- Nombre
- Teléfono
- Fax
- Equilibrio
Necesito hacer una consulta para recuperar registros cuyos campos Nombre, Teléfono o Fax hayan cambiado. Sin embargo, otros campos no deben tenerse en cuenta, es decir, si solo el campo Balance cambia, mi consulta no debería extraer ese registro (por lo tanto, un campo de marca de tiempo que se actualiza automáticamente cada vez que se modifica el registro no funciona)
Además, esto tiene que ejecutarse en una cantidad de bases de datos y plataformas diferentes, por lo que los GATILLOS o algo similar no son realmente una opción a menos que se ejecuten en MySQL, PostgreSQL, SQL Server y SQLLite.
Los campos son modificados por una aplicación de terceros que no puedo modificar, por lo que no puedo agregar un indicador y hacer que la aplicación de terceros establezca el indicador en VERDADERO siempre que modifique un campo relevante.
Mi solución inicial a esto es calcular un HASH de los campos relevantes y almacenarlo en un nuevo campo 'LastHash' o algo así. Luego, puedo calcular el hash de los campos relevantes para los datos actualmente en el registro, y si no coincide con el LastHash almacenado, sé que ha cambiado.
Eso parece bastante complicado ... pero parece que va a trabajar. ¿Hay una mejor manera? Si no, ¿hay una buena manera de implementar ese hash así que es eficiente y no consume mucho tiempo extraer esos registros modificados?
EDITAR
Algunas aclaraciones: Tanto mi solicitud y la otra actualización de la aplicación y se insertan en estas tablas. I puede hacer que mi aplicación calcule el hash inicial. Sin embargo, no puedo hacer que la otra aplicación lo calcule.
columnas de marca de hora que se actualizan automáticamente cada vez que un récord de cambios son factible, aquellos son bastante fáciles de replicar en todos los sistemas de bases de datos utilizando diferentes tipos de columna o desencadenantes muy simples.
PREGUNTA ADICIONAL
Si hash es el camino a seguir ... ¿hay algún tipo de algoritmo de control eficiente que no tomará por siempre para el cálculo de todos estos registros? MD5 o SHA1 podrían funcionar, pero parece que serían sllloowwww.
¿Cómo insertar/actualizar ese hash sin el uso de disparadores o modificando la aplicación que hace los insertos? –
EDITAR: Puedo hacer que mi aplicación calcule el hash inicial. Sin embargo, no puedo hacer que la otra aplicación lo calcule. –