Существует ли какой-либо инструмент отслеживания изменений таблиц для mysql, который будет регистрировать все изменения в другой таблице? - PullRequest
0 голосов
/ 08 октября 2009

Я работаю над системой управления проектами на PHP (платформа CodeIgniter), Mysql, AJAX, XAMPP, JQUERY. Мне нужен настраиваемый инструмент отслеживания изменений таблицы, который будет записывать все изменения в другую таблицу в той же базе данных для MySQL. В основном мне нужно иметь таблицу, в которой будут записываться подробности журнала обновлений, вставок и удалений в таблицах базы данных с тем, какой столбец изменился на какой (сводный). Так что я могу создать отчет из этой таблицы с изменениями в любой конкретной таблице.

Если инструмента нет, я уже начал работать над собственным решением, в котором я рассматриваю два варианта.

Один имеет триггеры для всех таблиц, которые будут создавать строки для каждого обновления и вставлять старые данные и новые измененные данные. Но здесь я нуждаюсь во внешнем пользовательском вводе как комментарии обновления пользователя. Как я могу вставить эти данные из триггера. Это кое-что сложное. Пожалуйста, предложите мне любое решение.

Второй Во-первых, я буду отслеживать изменения из PHP и вставлять каждый раз, когда обновляю и вставляю, что более удобно, но проще в реализации.

Какой из них вы предпочитаете? Если не предложите мне инструмент, который позаботится обо всем этом и вставит в новую таблицу в той же базе данных. Или я что-то упускаю проще?

Ответы [ 3 ]

3 голосов
/ 08 октября 2009

Я определенно предпочитаю делать это в коде приложения, а не в БД. ORM прекрасно справляется с подобными вещами, поскольку дает простой способ отслеживания и перехвата изменений.

Если у вас есть разумная абстракция в доступе к вашей базе данных, тогда должно быть довольно просто перехватывать любые вызовы базы данных в вашем PHP-коде и вести там запись. Конечно, если вы создаете SQL вручную, а затем вызываете базу данных напрямую, вам не нужно регистрировать изменения.

2 голосов
/ 08 октября 2009

Используйте хранимые процедуры для всех ваших обновлений / вставки / удаления Процедура должна принимать все аргументы, необходимые для выполнения данной задачи, плюс один аргумент, который будет содержать комментарий. Затем просто обновите / вставьте / удалите и сделайте запись (с комментарием) в таблице журнала.

ps: не вижу, как вы сможете использовать какой-либо инструмент, если вам нужно вставить комментарии (та же проблема, что и триггеров).

1 голос
/ 08 октября 2009

phpmyadmin поддерживает репликацию базы данных и отслеживание изменений с последней версии

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