各位高手好,我想做个触发器,当数据表中的记录被删除时,
A,将删除记录写进另外一张表里,
B,并将删除记录以@query类型邮件通知相关人。(SQL Mail是正常的)上面的做法,A可以实现,但B却不起作用,哪里需要修改?代码:
CREATE TRIGGER mailNoteAfterDeleted ON [dbo].[QC_ECN] 
FOR DELETE 
AS
begin
--写入删除记录表
insert into qc_ecn_del(Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14) select Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14 from deleted
--邮件通知
exec master..xp_sendmail 
@recipients='[email protected]',
@query='select  Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14 from deleted',
@attach_results='true',@width=1024,
@subject=N'規格刪除提醒通知',
@message=N'附件所在編號的規格被刪除,請確認是否正常刪除!'
end

解决方案 »

  1.   

    关键是master..xp_sendmail  
    可能访问不到deleted
    这样试下先(不能直接用,需要想下办法,先找出问题)CREATE TRIGGER mailNoteAfterDeleted ON [dbo].[QC_ECN]  
    FOR DELETE  
    AS
    begin
    --写入删除记录表
    insert into qc_ecn_del(Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14) select Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14 from deleted
    --邮件通知-- 写到一个表中
    truncate table tempTable
    insert tempTable
    select * from deleted--发送邮件
    exec master..xp_sendmail  
    @recipients='[email protected]',
    @query='select Ecn_00,Ecn_01,Ecn_02,Ecn_03, Ecn_04, Ecn_05,Ecn_06,Ecn_07,Ecn_08,Ecn_09,Ecn_10,Ecn_11, Ecn_12, Ecn_13, Ecn_14 from tempTable',
    @attach_results='true',@width=1024,
    @subject=N'規格刪除提醒通知',
    @message=N'附件所在編號的規格被刪除,請確認是否正常刪除!'
    end