3

有谁知道在 SQLite 3(使用 C 或 PHP)中注册“持久”UDF 或类似的方法?我知道我可以使用 C 或 PHP API 将 UDF 注册为回调函数,但只要应用程序对数据库的句柄,该函数就会存在。

在 MySQL 中,我可以通过类似“CREATE FUNCTION my_udf RETURNS INTEGER SONAME 'shared_lib_ contains_my_udf.so'”来实现这一点。

我需要这个的原因是,当“应用程序 B”使用调用我的 UDF 的触发器插入、更新或删除数据时,应该通知“应用程序 A”。操作数据库的应用程序是一个 PHP Web 应用程序。因此,如果我不能使 UDF 持久化,我必须为每个 Web 请求注册 UDF - 如果应用程序为每个 Web 请求打开多个连接,我什至必须在每个请求中多次注册 UDF . 这可能意味着必须在许多地方更改应用程序,而我真的想避免这种情况。

如果这是不可能的,有没有人有不同的解决方案?

4

1 回答 1

1

唯一的解决方案似乎是修改 SQLite 源以添加所需的功能。虽然由于部署问题,这在我的场景中不起作用,所以我必须完全放弃 SQLite 并切换到 MySQL 或 PostgreSQL。我希望 SQLite 有某种插件机制来使用自定义函数扩展它而无需重新编译,就像在 MySQL 中实现 UDF 的方式一样。不过,这可能会使它的“精简”程度大大降低。尽管我很喜欢 SQLite,但它并不是适合所有事情的工具。

于 2012-06-19T14:20:06.830 回答