Няма да можете да правите точното редактиране с помощта на SQL. Имате нужда от алгоритъм като Unix diff
върху файлове (което работи на ниво линия). На ниво знаци алгоритъмът би бил някаква вариация на разстоянието на Левенщайн
. Ако diff
отговаря на вашите нужди, можете да го изтеглите, да напишете съхранена процедура, за да го извикате и след това да го използвате в базата данни. Това би било доста скъпо.
Частта от вашия въпрос за поддържане на различните версии е много по-лесна. Бих добавил две колони EffDate
и EndDate
на всеки запис. Можете да получите най-новата версия, като потърсите EndDate is NULL
и намерете версията активна във всеки един момент. Merge
обикновено е полезно за поддържане на такава таблица.