我写了个触发器,功能是:当表Hishop_Orders中的“PaymentStatus”字段更新为1(int)时,即通过sql发邮件,但多次测试,均未收到邮件。可以确定的是,发邮件的功能是没问题的(已测试多次)。
可能是代码有问题,劳烦诸位帮看看。
use hishop2
go
IF EXISTS(SELECT name FROM sysobjects where name='trig_Hishop_Orders_update')
drop trigger trig_Hishop_Orders_update
go
CREATE TRIGGER trig_Hishop_Orders_update ON Hishop_Orders
FOR UPDATE
AS
declare @ps int
SELECT @ps=PaymentStatus from inserted
if (@ps=1)
begin
Exec msdb.dbo.sp_send_dbmail @profile_name='新订单',
@recipients='mldsmlds@163.com',
@subject='有新订单',
@body='新订单产生,请处理!'
end
go
------解决思路----------------------
一般有两个原因:
1、update了多行数据;SELECT @ps=PaymentStatus from inserted
获取最后一行数据不是1;
2、存在INSTEAD OF UPDATE触发器,导致UPDATE触发器无效。
建议从两个方面排除:
1、测试UPDATE触发器是否能正常接收信息。
2、单独测试发送邮件功能。