Есть ли способ прикрепить какой-то слушатель к таблице в mysql для отслеживания изменений? Я пытался найти это, но ничего не нашел. Я хотел бы сделать это, чтобы создать пользовательский интерфейс с живыми обновлениями.
show table status like 'tablename'
покажет подробности о том, когда таблица была в последний раз обновлена.
Кроме того, если ваша таблица имеет увеличивающийся первичный ключ (auto_increment, timestamp и т. Д.), То интерфейс HANDLER может быть полезен для отслеживания новых строк, вставленных в таблицу - блокировка до тех пор, пока не появятся новые данные.
http://dev.mysql.com/doc/refman/5.0/en/handler.html
Как уже упоминалось в других ответах, добавление триггеров в таблицу, вероятно, является наиболее гибким решением. Ваш триггер может обновить таблицу аудита, записывая изменения, а затем ваше приложение может опросить таблицу аудита, чтобы отразить любые изменения.
Есть несколько способов сделать это, но я предполагаю, что лучше сделать это в коде приложения, чем в базе данных.
Если вы действительно хотите сделать это в БД, у вас есть несколько вариантов: MySQL Proxy и MySQL триггеры. Я не уверен, что триггеры MySQL могут делать что-либо, кроме выполнения SQL, но этого может быть достаточно, вы можете использовать их для создания таблицы «обновлений» и регулярно ее опрашивать. Если вы не хотите этого делать, вы, вероятно, могли бы написать сценарий MySQL Proxy на Lua, чтобы делать то, что вам нужно, хотя это, вероятно, будет намного сложнее.
Руководство MySQL по работе с триггерами: http://dev.mysql.com/doc/refman/5.0/en/triggers.html
Введение в MySQL Proxy: http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html
Если вы знаете C ++, вы можете использовать библиотеку прослушивателя репликации MySQL для отслеживания изменений данных: https://launchpad.net/mysql-replication-listener
Может ли столбец timestamp_inserted в таблице помочь?
Если для нового столбца timestamp_inserted по умолчанию установлено значение NOW (), изменения кода могут быть не слишком серьезными, если вы это добавите. Я думаю, что в MySQL вам не нужно указывать столбцы, которые имеют значения по умолчанию, когда вы INSERT.
С помощью триггеров, упомянутых Эндрю, вы можете обрабатывать больше событий, таких как обновление или удаление.