【发布时间】:2017-02-03 05:25:54
【问题描述】:
如果插入的记录满足某些条件,我需要在 SQL 表中创建触发器以发送电子邮件。 也就是说,如果在插入的记录中字段 IdCircuito= 53、IdTipoDoc = 45 和 Gestor = 'Gest1',我会在 Table1 中创建触发器以向 X 发送电子邮件。此外,在电子邮件正文中,我希望显示该插入记录的某个字段的值。我做过这样的事情,但无论插入的记录如何,触发器都会执行:
CREATE TRIGGER dbo.SendEmail
ON dbo.TitulosDoc
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM TitulosDoc WHERE IdCircuito = 53 AND IdTipoDoc = 45 AND Gestor = 'Gest1')
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'rsg@gmail.com',
@subject = 'New requeriment',
@body = 'It's a new requeriment: ';
END
END
GO
在正文中,我想显示带有插入记录字段值的文字文本: @body = '这是一个新的要求:' + TitulosDoc.NombreDocumento;
有人可以帮助我吗?谢谢
【问题讨论】:
-
与其直接从触发器发送电子邮件,不如填充需要通过电子邮件发送的数据的临时表。然后创建一个进程,每隔几分钟查询一次临时表并发送电子邮件。这里的基本原理是因为您一次可以插入超过 1 行,并且您需要循环这些行。我们没有将循环和电子邮件放入您的触发器中,而是将其移至临时表以保持系统的性能。
标签: sql-server tsql triggers