Использование вставленных и удаленных таблиц для регистрации - моя концепция звучит? - PullRequest
1 голос
/ 01 июня 2019

У меня есть таблица с простым первичным ключом столбца идентификации. Я написал триггер «Для обновления», который, помимо прочего, должен регистрировать изменения определенных столбцов в таблице журнала. Излишне говорить, что я впервые попробовал это.

По существу следующим образом:

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 вопроса:

  • Правильно ли я использую функцию обновления?
  • Правильно ли я получаю доступ к значениям до и после?
  • Есть ли лучший способ?

1 Ответ

1 голос
/ 01 июня 2019

Если вы используете SQL Server 2016 или выше, я бы рекомендовал полностью пропустить этот триггер и вместо этого использовать системные версии временных таблиц .

Мало того, что это устранит необходимость в (и проблемы с производительностью вокруг) триггера, будет проще запрашивать исторические данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...