当前位置: 代码迷 >> Sql Server >> 一个update触发器无效,该怎么解决
  详细解决方案

一个update触发器无效,该怎么解决

热度:99   发布时间:2016-04-24 09:10:12.0
一个update触发器无效
我写了个触发器,功能是:当表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、单独测试发送邮件功能。
  相关解决方案