No podrá hacer la edición exacta usando SQL. Necesita un algoritmo como Unix diff
en archivos (que funciona en el nivel de línea). A nivel de carácter, el algoritmo sería una variación de distancia de Levenshtein
. Si diff
satisface sus necesidades, puede descargarlo, escribir un procedimiento almacenado para llamarlo y luego usarlo en la base de datos. Esto sería bastante caro.
La parte de su cuestión de mantener las diferentes versiones es mucho más fácil. Agregaría dos columnas EffDate
y EndDate
en cada registro. Puede obtener la versión más reciente buscando EndDate is NULL
y encontrar la versión activa en cada momento. Merge
es generalmente útil para mantener una tabla de este tipo.