Maison  >  Questions et réponses  >  le corps du texte

mysql - 如何观察数据库中某个表是否增加了一条记录

如题,数据库用的是MySQL。其中某个表一直以周期性添加一条数据。
目前用的是轮询的方式。
题主想知道数据库是否支持类似于Java中观察者模式,当数据库添加记录后,就会自动触发某个自定义函数?

黄舟黄舟2765 Il y a quelques jours865

répondre à tous(3)je répondrai

  • 高洛峰

    高洛峰2017-04-17 11:30:29

    以下,回答都是建立在主表数据量超大的基础上。

    方法1

    (1) 使用mysql触发器
    (2) mysql是可以运行外部脚本(可能跟用户权限和平台有关),通过脚本触发后端程序

    方法2

    (1) 使用mysql触发器
    (2) 触发到数据后,将数据写入到内存表
    (3) 后端程序轮询内存表,处理完成后,删除已经轮询的数据,防止内存表爆掉

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 11:30:29

    你的思路最好的解决办法应该是Hook,做个钩子给MySQL,当数据库改变了就执行钩子程序。不过我搜了下对于给数据库直接增加Hook好像没什么好的思路。
    唯一看到可行的办法是:使用Git管理你的MySQL数据库,当数据库文件发生更改的时候通过Git调用Hook。虽然可行,不过感觉略Geek了一点。

    所以感觉比较简单的思路还是从你的程序上思考,当程序执行了数据库操作类中的insert()函数后执行某个Hook函数。也就是说不给数据库加钩子,而给程序的数据库操作类加钩子。

    répondre
    0
  • 高洛峰

    高洛峰2017-04-17 11:30:29

    触发器能不能达到你的需求呢??

    当执行insert的时候,就触发。。

    répondre
    0
  • Annulerrépondre