首页 > 解决方案 > 用于发送电子邮件的数据库触发器不起作用

问题描述

我有一个自定义数据库 sql 触发器,如果​​满足先前的条件,它会插入一个新行。

问题是,如果我在下面包含我已注释掉的代码的电子邮件部分,数据库上的 confirm_Erp 标志不会被执行。

我是否需要添加延迟或如何重写它以确保 Confirmed_Erp 标志设置为 1,因此电子邮件将发送。电子邮件条件之一是confirmed_erp = 1

有一个运行在数据库之上的应用程序,它运行作业,一旦作业完成,数据库中的 confirm_erp 标志更改为 1。

代码:

      begin
      select @new_id = max(id) from jobr_generic;
      insert jobr_generic (id, type, jobr_ts, customerno, str_attr1,str_attr3, 
      dec_attr1, str_attr4,str_attr5, str_attr6, 


str_attr7,str_attr8,str_attr9,str_attr10,str_attr11,str_attr12,str_attr13,str_attr14,str_attr15,str_attr16,str_attr17,str_attr18,str_attr19,str_attr20, send_erp,species, maincut, subcut, meatgroup, packtype, factorycode, supplyingsite, currency)
       values (@new_id+1,  '235', getdate(),  @customerno,@attr1,   @attr3, @decattr1, @attr4,    @attr5,    @attr6,    @attr7,   @attr8,   @attr9,   @attr10,   @attr11,   @attr12,   @attr13,   @attr14,   @attr15,   @attr16,   @attr17,   @attr18,   @attr19,   @attr20,   1,       @species,@maincut,@subcut,@meatgroup,@packtype,@factorycode,@supplyingsite,@currency);
       end 
       if @type ='235' AND @CONFIRMED_ERP = 1 AND @itemrequestfor = 'P'
        begin
        declare @body2 varchar(1024)
        set @body2 = 'Primal Item: '+@attr16+ ' has been created and is ready 

          for use.'
          exec msdb.dbo.sp_send_dbmail 
            @profile_name = 'DoNotReplyMailProfile',
            @recipients= 'test@test.com',
            @copy_recipients= 'test1@test.com',
            @subject = 'A Primal Item has been Created',
            @body = @body2,
            @body_format = 'TEXT',
            @exclude_query_output = 1 ;

            end

标签: sql-servertsqldatabase-trigger

解决方案


推荐阅读