mysql - 如何观察数据库中某个表是否增加了一条记录
黄舟
黄舟 2017-04-17 11:28:29
0
3
869

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(3)
小葫芦

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

方法1

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

方法2

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

洪涛

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

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

小葫芦

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

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan