Отслеживание изменений данных (обновление / удаление) в MySQL
У меня есть схема БД, где пользовательские данные хранятся с использованием ссылок на внешние ключи, эти внешние ключи определены администратором. Кроме того, есть некоторые данные, которые хранятся без первичных ключей, однако у меня есть другие ограничения, чтобы избежать избыточности и других проблем.
Из-за требований приложения, когда пользователь "обновляет" свою информацию, я должен удалить все записи пользователя из "обновленной" таблицы и заново вставить все записи пользователя. (Я рассмотрел все другие варианты)
Теперь из-за моего поискового решения (solr) мне нужно отслеживать изменения в пользовательских данных (обновления / удаления) . Я планирую иметь возможность сравнить последние зафиксированные данные с данными в реальном времени. Я боюсь, насколько устойчивым было бы выполнение хранимых процедур каждые 20 минут или около того, есть ли лучший способ отслеживания данных с помощью SQL?
1 ответ
Вы можете создать таблицу изменений, которая содержит те же столбцы, что и исходная таблица, а также другой столбец с именем "Обновлено". Затем установите триггер для записи в эту таблицу изменений исходных значений при изменении исходной таблицы.
Пример: Исходная таблица:
Name | Address | City
Jane Doe | 1 Main St. | New York
Изменить на исходную таблицу:
Name | Address | City
Jane Doe | 2 Smith St. | Dubuque
... который запускает вставку в таблицу изменений:
Name | Address | City | UpdatedOn
Jane Doe | 1 Main St. | New York | 2012-01-01
Информация об использовании триггеров в mysql находится здесь: http://dev.mysql.com/doc/refman/5.0/en/triggers.html