有一天在群里
有一个小孩子问:当一张表新增记录后,我要给这条记录关联联系人发送邮件,怎么配置数据库,求教
孤陋寡闻的我:不应该和配置数据库有关系吧 你就在代码里面写了insert 操作之后 调用发送邮件的方法就行了啊?
那个小孩子说:查了说数据库可以配置发送邮件的功能,但是具体的一些触发条件不会写,想请大神们指导一下
哦。。。。原来数据库可以配置发送邮件 具体配置步骤 我没有看。。哈哈哈
数据库可以配置发送邮件:具体教程,搜下面的地址
http://jingyan.baidu.com/article/c1a3101e50f4a5de656debff.html
蓝后,我就给这个小孩子写了下面的一段代码
Create TRIGGER tri_email --tri_email为随意取的触发器的名字
ON [dbo].[ec_goods] --[dbo].[ec_goods]为插入数据的表名
AFTER insert --insert操作之后
AS
BEGIN
if exists(select * from inserted) --表示插入一条数据成功
begin
declare @content nvarchar(max) ,@recipients1 nvarchar(max)
select @content=i.GoodName+'|'+i.GoodID from inserted i; --从刚插入数据的表中随意抽取出来两个字段组成一个邮件内容
select @recipients1=i.GoodDescription from inserted i; --从刚插入数据的表中查询出对应的邮箱账号
exec msdb.dbo.sp_send_dbmail @profile_name='SQLProfile',--数据库发送邮件的存储过程 通过你刚才设置的 就生成了
@recipients=@recipients1, --把刚才取出来的邮箱账号赋值给存储过程中的recipients参数
@subject='sql server send email by trigger',-- 存储过程的subject参数
@body=@content --把刚才取出来的内容赋值给存储过程的body参数
end
END
GO
并且告诉他:
这样应该是可以动态关联邮箱账号,并且在插入一条数据之后 发送邮件了
我就给他分析了一下下:Create TRIGGER tri_email --tri_email为随意取的触发器的名字
ON [dbo].[ec_goods] --[dbo].[ec_goods]为插入数据的表名,
你看这句话,是为一个表上创建一个触发器
上面的方法不一定成功哈,那是我一次性写出来的,一次性写出来的,应该都不会成功吧,吼吼吼。我记录下来就是我自己看看的,以后遇到问题,如果不对,我再动态改,我就先记录下来