有一天在群里

有一个小孩子问:当一张表新增记录后,我要给这条记录关联联系人发送邮件,怎么配置数据库,求教

孤陋寡闻的我:不应该和配置数据库有关系吧  你就在代码里面写了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]为插入数据的表名,

 你看这句话,是为一个表上创建一个触发器 



 上面的方法不一定成功哈,那是我一次性写出来的,一次性写出来的,应该都不会成功吧,吼吼吼。我记录下来就是我自己看看的,以后遇到问题,如果不对,我再动态改,我就先记录下来