数据库的触发器能正常运行,但是数据表中的字段值没有改变?
前言
已经正常运行了多年的一个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开发商!除了这个就没别的方案了么?
有没有一种可能,事务回滚了或者
$filled
不包含修改字段先测试一个简单的,能否触发在另一个表新增一条记录,成功的话写程序去处理这张表。如果不行,就写程序去检查 status 表的变化。存储过程里请求 http 不靠谱,越简单越好,分离出来,能监听 status 变化就行了。
说实话,我从来不相信存储过程,感觉不靠谱。还不如轮询来的实在。