sql-server - 用于发送电子邮件的数据库触发器不起作用
问题描述
我有一个自定义数据库 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
解决方案
推荐阅读
- html - iOS 上的视频标签无法正常工作,视频隐藏了其他元素
- javascript - 如何在不使用 `navigator` 和 `navigator.userAgent` 的情况下通过 javascript 检测浏览器版本?
- css - 如何用 CSS 覆盖 SVG 路径填充?
- python - Python 错误:没有足够的值来解包(预期 3,得到 2)
- flutter - 如何滚动到下一页 PageView Flutter
- android - 点击创建pdf后内容不显示
- google-sheets - 根据公式传递的第三列数据唯一
- python - 使用等于阶乘、除法和平方的函数获得最准确的精度
- mysql - MySQL 外键参考
- arrays - 使用 React 和 PnPJS 更新 SharePoint spfx 中的数组