Anda tidak akan dapat melakukan pengeditan yang tepat menggunakan SQL. Anda memerlukan algoritme seperti diff
Unix pada file (yang berfungsi pada level baris). Pada tingkat karakter, algoritme akan menjadi beberapa variasi Jarak Levenshtein
. Jika diff
memenuhi kebutuhan Anda, Anda dapat mengunduhnya, menulis prosedur tersimpan untuk memanggilnya, dan kemudian menggunakannya dalam database. Ini akan menjadi agak mahal.
Bagian dari pertanyaan Anda tentang mempertahankan versi yang berbeda jauh lebih mudah. Saya akan menambahkan dua kolom EffDate
dan EndDate
ke setiap catatan. Anda bisa mendapatkan versi terbaru dengan mencari EndDate is NULL
dan temukan versi yang aktif pada waktu tertentu. Merge
umumnya berguna untuk memelihara tabel seperti itu.