3

我必须在某个状态的数据库字段上创建一个进程调用。我听说您可以使用 db 触发器执行 cURL 调用,但 Google 并没有返回任何我可以使用的东西。

所以我想我的问题是三个部分:

  1. 这可以做到吗?
  2. 参考?
  3. 替代解决方案?

工作流程:

db 字段已更新为状态,需要启动运行我的工作流程中的下一步(这是一个 PHP 脚本)的脚本/请求/进程,这将拉取记录在 db 中并处理另一个步骤,然后使用更新 db结果。

4

3 回答 3

7

您不应该为此使用触发器,因为触发器会阻止事务,因此它会使您的数据库变得非常慢。你还需要为 Postgres 安装不安全的语言——pl/sh、pl/perl、pl/python 或其他。

这个问题有2个更好的解决方案:

  • 有一个进程连接到数据库和LISTEN以获取触发器生成的NOTIFY事件——这将立即生效;

  • 使用例如 cron 脚本定期检查新数据 - 这会延迟工作。

于 2010-11-25T16:35:14.917 回答
3

如果你可以调用一个 shell 脚本, http ://plsh.projects.postgresql.org/ 你可以调用一个 curl。

但我对这种方法有一种令人毛骨悚然的感觉......

  • 如果远程服务器下线,数据不一致??

选择:

  • 我不会将业务逻辑放在触发器中,只会将自定义约束或非规范化。

  • 使用中间层或存储过程执行您需要执行的操作。

问候,//t

于 2010-11-24T22:03:55.850 回答
1

我认为您正在寻找的是 postgres 中的触发器,它将运行必要的脚本。文档中解释了触发器,此处解释了添加新触发器的语法。您要查找的触发器类型似乎是 AFTER UPDATE 触发器。据我所知,您运行的脚本必须检查该字段是否处于所需状态,因为 postgres 将始终运行触发器。

于 2010-11-24T21:55:28.173 回答