数据库的触发器能正常运行,但是数据表中的字段值没有改变?

前言

已经正常运行了多年的一个erp系统,用的是sqlserver2008,其中有一个订单表orders中一个status字段,1为订单为未审核,2为已审核。
以前都是审核完以后给用户发送短信,由于老板想省钱,想把发送短信改为发送微信公众号的模板消息。

我的实现过程

因为这个erp软件是09年开发,已经没有源码,想改erp源码的逻辑已经不现实。所以我想是直接在orders表中加上一个触发器,一旦status字段进行更改时,把这个订单号和订单信息组装成一个 url,然后调用存储过程请求一个http,现在我写的存储过程运行是没问题,参数调用都没毛病!

问题来了?

我直接在数据库里新建一个查询更改status状态,执行一切正常的。
比如

update orders set status=2 where id=2030908;

这样在sqlserver 2008 management里执行,一切都正常,触发器也执行了,存储过程也运行了。
但是,我在erp软件里直接审核订单,触发器能够把当前的订单信息读取出来,但是表中的status字段就是不能更新。
我看了erp软件在审核订单时,就是把orders表中的status字段进行更改了。
我问了一下gpt,gpt说有可能是erp软件在更新订单时用了事务造成的,让我联系erp开发商!除了这个就没别的方案了么?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

有没有一种可能,事务回滚了或者 $filled 不包含修改字段

8个月前 评论

先测试一个简单的,能否触发在另一个表新增一条记录,成功的话写程序去处理这张表。如果不行,就写程序去检查 status 表的变化。存储过程里请求 http 不靠谱,越简单越好,分离出来,能监听 status 变化就行了。

8个月前 评论
msmax (楼主) 8个月前
随波逐流

说实话,我从来不相信存储过程,感觉不靠谱。还不如轮询来的实在。

8个月前 评论
msmax (楼主) 8个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!