O método usual para "rastrear quaisquer alterações" em uma tabela é adicionar procedimentos de gatilho de inserção/atualização/exclusão na tabela e salvar esses registros em uma tabela de histórico.
Por exemplo, se sua tabela de dados principal for "ItemInfo", você também terá uma tabela ItemInfo_History que obtém uma cópia do novo registro toda vez que algo muda (através dos gatilhos).
Isso mantém o desempenho de sua tabela primária consistente, mas oferece acesso ao histórico de quaisquer alterações, se necessário.
Aqui estão alguns exemplos, eles são para SQL Server, mas eles demonstram a lógica:
Minha tabela de repositório Minha tabela de histórico do repositório Meu Procedimento de gatilho de inserção de repositório Meu Procedimento de disparo de atualização de repositório