Создать таблицу, в которой хранится следующая информация ...
CREATE TABLE MyData (
ID INT IDENTITY,
DataID INT )
CREATE TABLE Data (
ID INT IDENTITY,
MyID INT,
Name VARCHAR(50),
Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP)
Теперь создайте sproc, который делает это ...
INSERT Data (MyID, Name)
VALUES(@MyID,@Name)
UPDATE MyData SET DataID = @@IDENTITY
WHERE ID = @MyID
В общем, таблица MyData - это просто таблица ключей. Затем вы указываете на запись в таблице данных, которая является самой последней. Всякий раз, когда вам нужно изменить данные, вы просто вызываете sproc, который вставляет новые данные в таблицу данных, а затем обновляет MyData, чтобы указывать на самую последнюю запись. Все, если другие таблицы в системе отключат MyData.ID для целей внешнего ключа.
Эта схема позволяет избежать необходимости во второй таблице журналов (и поддерживать их синхронизацию при изменении схемы), но за счет дополнительного объединения и некоторых накладных расходов при создании новых записей.