有没有人知道在SQLite 3(使用C或PHP)中注册“持久性”UDF的方法,或类似的东西?我知道我可以使用C或PHP API将UDF注册为回调函数,但该函数仅与应用程序对数据库的句柄一样长。
在MySQL中,我可以通过“CREATE FUNCTION my_udf RETURNS INTEGER SONAME”shared_lib_containing_my_udf.so'来实现这一点。
我需要这个的原因是当“应用程序B”使用调用我的UDF的触发器插入,更新或删除数据时,应该通知“应用程序A”。操作数据库的应用程序是PHP Web应用程序。因此,如果我不能使UDF持久化,我必须为每个Web请求注册UDF - 如果应用程序为每个Web请求打开多个连接,我甚至必须为每个请求多次注册UDF 。这可能意味着必须在许多地方更改应用程序,我真的想避免这种情况。
如果无法做到这一点,是否有人有不同的解决方案?
答案 0 :(得分:1)
唯一的解决方案似乎是修改SQLite源以添加所需的功能..这在我的场景中不起作用,但由于部署问题,所以我将不得不放弃SQLite并切换到MySQL或PostgreSQL 。我希望SQLite有一些插件机制来使用自定义函数扩展它而无需重新编译,就像在MySQL中实现UDF的方式一样。但这可能会使它显着减少“精简”。尽管我喜欢SQLite,但它并不适合所有事情。