Как отслеживать изменения в нескольких столбцах таблицы базы данных для целей аудита? - PullRequest
6 голосов
/ 05 апреля 2011

На этот вопрос отвечали несколько раз: здесь , здесь и внешние ссылки здесь и здесь .

Я понимаю подходы, описанные в вышеупомянутых темах, и планирую использовать этот подход.

Но у меня мало основных сомнений в реализации этого.

В моем случае несколько столбцов в строке могут быть обновлены одновременно, поэтому следуйте правильному способу реализации:

  1. Определите тип операции (INSERT / UPDATE/ DELETE)
  2. Узнать, какие столбцы обновляются
  3. Прочитать полную строку перед обновлением
  4. Вставить одну строку в таблицу аудита для каждого столбца, который будет изменен со старым и новым значением(вместе с другими деталями)
  5. обновить таблицу

1 Ответ

4 голосов
/ 05 апреля 2011

Если вы используете достаточно свежую версию mySQL, я бы лично использовал триггеры .

Предполагая, что они работают более или менее так же, как те, с которыми я знаком в других продуктах (например,Oracle) ваша проблема становится проще, в том смысле, что вы помещаете триггеры «update» в строку и используете ее для обновления таблицы аудита для каждого интересующего вас поля.

Возможное предупреждение: если ваше приложение регистрирует журнална БД как на одного пользователя (например, обычный подход, если вы используете пул соединений), может быть сложно записать действительную личность пользователя.

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