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

How to create a trigger to send email

我正在尝试在 SQL 中创建一个触发器来向特定地址发送电子邮件。大纲是:

  1. 我创建了一个 select,其中 returns 一个警报列,如果余额不足则指示 1,否则指示 0。
  2. 我需要创建一个 trigger 如果警报列为 1,它会发送一封电子邮件。
  3. selecttrigger需要每周执行一次

完成此任务的最佳方法是什么?任何指导方针都会有所帮助。我正在使用 Firebird 数据库。

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

虽然数据库引擎可以发起 电子邮件发送,但它永远不会执行 发送本身。 只应在数据库服务器中执行一些简短(快速)且无错误的操作。

应该还有另一个application/service/daemon 运行ning,它应该根据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 可能不太适合那里,因为它更适合 运行 守护进程请求的短脚本,而不是连续 运行ning 守护进程本身。虽然也许 PHP 专家可以兼得。我也不知道 PHP 是否支持 Firebird 事件,它似乎不是脚本语言的优先级。

您可以通过谷歌搜索 Firebird POST_EVENT 阅读更多关于活动的信息,例如,在许多链接中将有: