Non sarai in grado di eseguire la modifica esatta utilizzando SQL. Hai bisogno di un algoritmo come Unix diff
su file (che funziona a livello di linea). A livello di carattere, l'algoritmo sarebbe una variazione della distanza di Levenshtein
. Se diff
soddisfa le tue esigenze, puoi scaricarlo, scrivere una procedura memorizzata per chiamarlo e quindi utilizzarlo nel database. Sarebbe piuttosto costoso.
La parte della tua domanda sul mantenimento delle diverse versioni è molto più semplice. Aggiungerei due colonne EffDate
e EndDate
su ogni record. Puoi ottenere la versione più recente cercando EndDate is NULL
e trova la versione attiva in qualsiasi momento. Merge
è generalmente utile per mantenere tale tabella.