如何创建发送电子邮件的触发器

问题描述 投票:-1回答:2

我正在尝试在SQL中创建触发器以将电子邮件发送到特定地址。大纲是:

  1. 我创建了一个select,它返回一个警报列,指示余额是否为低,如果为1,否则为0。
  2. 我需要创建一个trigger,如果警报列为1,它将发送一封电子邮件。
  3. [selecttrigger需要每周执行一次。

实现此目标的最佳方法是什么?任何准则都将有所帮助。我正在使用Firebird数据库。

sql firebird
2个回答
1
投票

尽管数据库引擎可以发起发送电子邮件,但绝不能发送本身。在数据库服务器内只能执行一些简短(快速)且无错误的操作。

应该有另一个正在运行的应用程序/服务/守护程序,该应用程序应该基于SQL领域中准备的数据来发送电子邮件。问题是何时应触发此发件人应用程序。

与数据库无关的方式将按计划的时间间隔轮询数据库,该时间间隔在传统上被昵称为“ cron”操作,由Rajiv Shah提到。每分钟一次或每秒一次或每小时一次-由您选择。

特定于Firebird的方式将使用POST_EVENT <string constant>命令。它可以代替基于时间的轮询或与之结合使用。

这里是示例:

CREATE TRIGGER POST_NEW_ORDER FOR SALES
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
  POST_EVENT 'new_order';
END

https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-coding.html#fblangref25-psql-postevent

您的程序如何订阅这些事件将取决于编程语言和Firebird访问库。据我了解,PHP可能不太适合那里,因为它更适合根据守护程序的请求运行短脚本,而不是作为一个连续运行的守护程序本身。尽管PHP专家可能同时拥有两种方法。我也不知道PHP是否支持Firebird事件,这似乎不是脚本语言的优先事项。

您可以通过搜索Firebird POST_EVENT来了解有关事件的更多信息,在许多链接中,例如:


1
投票

您可以在正在使用的堆栈中实现CRON,并定期检查列,如果满足您的条件,请发送电子邮件。

© www.soinside.com 2019 - 2024. All rights reserved.