U kunt de exacte bewerking niet uitvoeren met SQL. Je hebt een algoritme nodig zoals de Unix diff
op bestanden (wat werkt op regelniveau). Op tekenniveau zou het algoritme een variatie zijn op Levenshtein-afstand
. Als diff
aan uw behoeften voldoet, kunt u het downloaden, een opgeslagen procedure schrijven om het aan te roepen en het vervolgens in de database gebruiken. Dit zou nogal duur zijn.
Het deel van uw vraag over het onderhouden van de verschillende versies is veel eenvoudiger. Ik zou twee kolommen toevoegen EffDate
en EndDate
op elke plaat. U kunt de meest recente versie krijgen door te zoeken naar EndDate is NULL
en vind de versie op elk moment actief. Merge
is over het algemeen handig voor het onderhouden van een dergelijke tabel.