У меня есть таблица с простым первичным ключом столбца идентификации. Я написал триггер «Для обновления», который, помимо прочего, должен регистрировать изменения определенных столбцов в таблице журнала. Излишне говорить, что я впервые попробовал это.
По существу следующим образом:
Declare Cursor1 Cursor for
select a.*, b.*
from inserted a
inner join deleted b on a.OrderItemId = b.OrderItemId
(где OrderItemId
- фактическое имя первичного идентификационного ключа).
Затем я обычно открываю курсор и захожу в следующий цикл выборки. С столбцами, которые я хочу проверить, я делаю:
если обновление (поле 1)
начать
..... сделать некоторые записи
конец
Столбцы включают varchars, биты и datetime. Это работает, иногда. Проблема в том, что функция log записывает значения a и b поля в журнал, и в некоторых случаях кажется, что значения до и после идентичны.
У меня есть 2 вопроса:
- Правильно ли я использую функцию обновления?
- Правильно ли я получаю доступ к значениям до и после?
- Есть ли лучший способ?