有没有办法将某种监听器附加到MySQL中的表来监视变化? 我试图search这个,但没有发现任何东西。 我想这样做来创build一个与实时更新的用户界面。
show table status like 'tablename'
将显示有关表最后更新时间的详细信息。
另外,如果你的表有一个递增的主键(auto_increment,timestamp等),那么HANDLER接口可以用于追踪插入到表中的新行 – 阻塞直到新数据到达。
http://dev.mysql.com/doc/refman/5.0/en/handler.html
正如在其他答案中提到的那样,在表中添加触发器可能是最灵活的解决scheme。 您的触发器可以更新logging更改的审计表,然后您的应用程序可以轮询审计表以反映任何更改。
有几种方法可以实现这一点,但是我的猜测是,在应用程序代码中执行此操作比在数据库中更好。
如果你真的想在数据库中做到这一点,你有几个选项,MySQL代理和MySQL触发器。 我不确定MySQL触发器是否可以执行除SQL以外的其他任何操作,但这可能足够了,您可以使用它们来创build“更新”表并定期轮询。 如果你不想这样做,你可以在Lua中写一个MySQL代理脚本来做你所需要的,尽pipe这样做可能会困难得多。
MySQL手册处理触发器: http : //dev.mysql.com/doc/refman/5.0/en/triggers.html
MySQL代理的介绍: http : //dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html
表中的timestamp_inserted列会有帮助吗?
如果新列timestamp_inserted默认为NOW(),那么如果添加了代码,代码更改可能不会太严重。 我想在MySQL中,你不必指定INSERT时有默认值的列。
通过Andrew提到的触发器,您可以处理更多事件,如更新或删除。
如果您了解C ++,则可以使用MySQL复制监听器库来执行更改数据捕获: https : //launchpad.net/mysql-replication-listener