Добавьте столбец «Версия» в качестве первого столбца каждой таблицы, для которой вы хотите отслеживать версии, и их дочерние таблицы.Столбец должен быть добавлен в ваш кластерный первичный ключ в качестве первого столбца.Текущая версия всегда должна иметь Version = 0, чтобы упростить написание ваших запросов, и не требовать поиска MAX (версии) в каждом запросе.Убедитесь, что все дочерние таблицы также содержат столбец Версия и ссылаются на него в своих внешних ключах.Перед обновлением скопируйте данные Version = 0 из всех связанных таблиц в Version = 1.Следующее обновление будет копировать в версию = 2 и так далее.В конечном итоге у вас будут самые старые данные в версии = 1, самые последние в версии = 0 и самые новые в версии = X.Таким образом, вы можете создавать сложные схемы базы данных, управлять версиями данных и иметь возможность полностью откатывать данные до исторической версии, копируя данные из Версии = X в Версию = 0.
В вашем случае, ваша новая структура таблицыбудет ...
Версия, id, firstName, secondName, address (PK- VersionId, id)
Если у вас есть дочерняя таблица, например таблица транзакций, это будет выглядеть так ...
Версия, id, TransactionId, Amount (PK- VersionId, id, TransactionId)
Я использовал этот метод дляведение версий данных без необходимости создавать дополнительные таблицы для их поддержки.