DML触发器可以在警报中有用吗?

时间:2018-08-02 16:53:42

标签: sql sql-server triggers

我经常想起触发器如何有用但没有创建触发器。

我有一项业务需要,当一名选择性类型的患者过期时会触发一封警报电子邮件。这种情况很少发生,因此似乎每小时都要进行一次SSRS或SSIS功能检查的资源非常密集,而这种情况每年可能只发生一次。

因此,我开始考虑使用AFTER类型的DML触发器。当“排放处置” =“已过期”并且“允许来源” =“选修”时,则向指定用户发送警报电子邮件或其他通知。

这是否很好地使用了触发器,还是给数据库增加了负担,而这在其他地方会更好地得到解决?有没有人对业务用例的DML触发器感到成功和满意?

1 个答案:

答案 0 :(得分:0)

是的,生成事件是触发器的合理用法。请注意,除了在包含通知的表或Service Broker队列中插入一行之外,您实际上不应在触发器中执行任何操作。然后,后台进程实际上将对该事件起作用。

对于电子邮件Database Mail可以为您完成此操作,您只需调用sp_send_dbmail即可生成传出SMTP电子邮件并将其排队发送。或者只是在您创建的表中写一行,然后让后台作业或应用程序读取它并发送邮件,或者触发您需要的任何下游过程。