先谢谢您的帮助!
我想设置一个 Lisp 程序,当我的 Postgres 数据库表更新时它会执行一些操作。我正在使用令人惊叹的后现代图书馆,它非常棒。
正如这个问题( client side notification on table change in Common Lisp with Postmodern package )中所讨论的,我不想轮询数据库(因为OP抱怨答案),而是希望数据库告诉我的程序何时执行某物。
回答者指向后现代函数“wait-for-notifications”:https://github.com/marijnh/Postmodern/blob/22aab0ec25d5f6affd390e690827a7515aeafd4f/cl-postgres/public.lisp#L358-L370
我有点担心这个函数,因为 1.它是后现代的内部函数,因此(如果我错了,请告诉我)不供公众使用,2.它以“数据库连接”作为参数,我可以不追查。
所以:
- 谁能指出我正确理解和正确使用“数据库连接”的方向?
- 告诉我,我在这里咆哮错误的树,如果是这样,请为我指明正确的方向,以学习如何让我的 Lisp 程序在我的表更改时执行某些操作?
太感谢了!
有不同的层,
wait-for-notification
是从包中导出的符号cl-postgres
,并在名为 的文件中定义public.lisp
,因此应该可以直接使用它。后现代处于更高的抽象级别,但根据您的需要,您可以直接调用cl-postgres
函数。连接是您拨打电话时获得的信息
open-database
。辅助宏例如with-connection
绑定特殊*database*
变量。通常,这由 和其他命令无形地使用query
,这些命令查看 的当前绑定*database*
。但是,如果您想更多地了解它的使用方式,https://marijnhaverbeke.nl/postmodern/cl-postgres.html上的文档似乎相当不错。评论
如果您要等待表中的更改,您很可能需要使用专用线程。文档说: