Vous ne pourrez pas faire l'édition exacte en utilisant SQL. Vous avez besoin d'un algorithme tel que le diff
Unix sur les fichiers (qui fonctionne au niveau de la ligne). Au niveau du personnage, l'algorithme serait une variation de distance de Levenshtein
. Si diff
répond à vos besoins, vous pouvez le télécharger, écrire une procédure stockée pour l'appeler, puis l'utiliser dans la base de données. Ce serait plutôt cher.
La partie de votre question concernant le maintien des différentes versions est beaucoup plus simple. J'ajouterais deux colonnes EffDate
et EndDate
sur chaque enregistrement. Vous pouvez obtenir la version la plus récente en recherchant EndDate is NULL
et trouver la version active à tout moment. Merge
est généralement utile pour maintenir une telle table.