使用SQL Server Management Studio 2012
我希望每当表中的某个字段大于零时就向我发送一封电子邮件。这不是经常发生的事情,但是我希望在发生时得到提醒。
我只想通过电子邮件发送新的插入内容,而不是以前的任何内容。在下面的示例中,以第3列为关注字段,Harry是最新的插入内容,第3列大于零。这是我希望收到警报的时间,因为您也可以看到Jack的值也大于零,但请假设这是一个较旧的条目,所以我不希望它出现在电子邮件中。
Name Department Column3 Column4 Column5
Harry HR 2 ABC DEF
James Sport 0 ABC DEF
Jack Finance 1 ABC DEF
SQL中的电子邮件功能相对较新,但了解以下基本知识
use Database
go
begin
Execute msdb.dbo.sp_send_dbmail
@recipients = 'emailaddress',
@query = 'select Name, department, Column3 from mytable
where Column3 > 0 '
End
答案 0 :(得分:1)
可以使用触发器来检查INSERTED
表中的值,并在该值超过指定数量时执行sp_send_dbmail
。下面是一个示例触发器。如果尚未使用sp_send_dbmail
,则需要正确配置数据库邮件。可以在here中找到有关数据库邮件和进行此设置的更多详细信息。游标用于为添加/更新的每个新行发送电子邮件。由于您只想从新行或更新行中获取数据,因此可以从INSERTED
表而不是查询中获取数据,然后将其用于构建@body
的{{1}}参数。
请注意,sp_send_dbmail
用于保护null,就像使用CONCAT
运算符将多个字符串一起添加并且其中一个为null一样,整个串联的字符串也将为null。但是,如果使用+
,则仍将保留非null字符串。表变量用于最初从CONCAT
表中获取值,该值随后将被馈送到游标中。 INSERTED
表将从INSERTED
和INSERT
操作中捕获值。从您的问题来看,似乎您仍然想将新值添加到表中,因此使用了UPDATE
触发器。
AFTER
答案 1 :(得分:0)
我正在寻找使用VBA而不是SQL的类似答案。这可能是一个很好的解决方案,但是仍然需要了解条件位。
Trigger email alert on excel based on date review
您会考虑切换到VBA吗?