我可以从postgres触发器执行cURL调用吗?

时间:2010-11-24 21:45:20

标签: php database postgresql triggers database-trigger

我必须在db字段上创建一个特定状态的进程调用。我听说你可以使用数据库触发器执行cURL调用,但谷歌不能回复我可以使用的任何东西。

所以我猜我的问题分为三部分:

  1. 可以这样做吗?
  2. 参考?
  3. 替代解决方案?
  4. 工作流:

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

3 个答案:

答案 0 :(得分:6)

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

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

  • 有一个连接到数据库的进程和LISTEN s用于触发器生成的NOTIFY事件 - 这将立即生效;

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

答案 1 :(得分:3)

如果你可以调用shell脚本, http://plsh.projects.postgresql.org/ 你可以称之为卷曲。

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

  • 如果远程服务器脱机,数据不一致??

替代:

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

  • 执行中间层或存储过程所需的操作。

此致 //吨

答案 2 :(得分:1)

我认为你正在寻找的是postgres中的触发器,它将运行necessery脚本。触发器在the documentation中进行了解释,解释了添加新触发器的语法here。您正在寻找的触发器类型似乎是AFTER UPDATE触发器。据我所知,你运行的脚本必须检查字段是否具有所需状态,因为postgres将始终运行触发器。