единственный способ сделать это - сохранить текущую строку в таблице истории. Сделайте то, что вы пробовали, и присоединитесь к фактической таблице и вставьте все столбцы из текущей фактической таблицы в таблицу истории.
у вас, вероятно, что-то подобное, где история имеет только предыдущую версию строки:
YourTable
ID value1 value2
1 AAA AAAA
2 BBB BBBB
3 CCC CCC3
YourTableHostory
HistoryID HistoryDate ID value1 value2
1 4/17/2010 2 CCC CCCC
2 4/18/2010 2 CCC CCC1
Я говорю, сделайте что-то вроде этого, где хранится каждая версия:
YourTable
ID value1 value2
1 AAA AAAA
2 BBB BBBB
3 CCC CCC3
YourTableHostory
HistoryID HistoryDate ID value1 value2
1 4/10/2010 1 AAA AAAA
2 4/10/2010 2 BBB BBBB
3 4/10/2010 3 CCC CCCC
4 4/17/2010 2 CCC CCC1
5 4/18/2010 2 CCC CCC2
5 4/19/2010 2 CCC CCC3
таким образом, когда происходит вставка или обновление, просто вставьте текущую строку в таблицу истории, у вас будет дубликат текущей строки, но это не так уж и страшно.
Если вы просто добавляете этот триггер в существующую таблицу с данными в ней, запустите такой запрос, чтобы предварительно заполнить все текущие значения для вас:
INSERT INTO YourTableHostory
(HistoryDate,ID,value1,value2)
SELECT
GETDATE(),ID,value1,value2
FROM YourTable