sql server触发器失效 (通过python程序update, 无法触发update触发器)

使用python程序做part_ud表的更新(下方为python程序中的第七步更新part_ud表的函数):

# step-07, 将已存在数据从临时表转入(update)表 Part_UD
def step_07(db_cursor):
    print('  > Step-07, update Part_UD from temp ...')
    wsql = '''UPDATE t SET t.Supplier_c = s.supplierid,
  t.Brand_c = s.brandid,
  t.CasNumb_c = s.cas,
  t.CatPrice_c = s.catprice,
--  t.RateDefCatPrice = s.ratedefcatprice,
  t.SalesDiscount_c = s.salesdiscount,
  t.Stock_c = s.stock,
  t.ShippingDate_c = s.shippingdate,
  t.PartNameEN_c = s.nameen,
  t.PartNameCN_c = s.namecn,
  t.MDLNumb_c = s.mdl,
  t.MolFml_c = s.molfml,
  t.MolWt_c = s.molwt,
  t.PkgSize_c = s.pkgsize,
  t.PkgMessurement_c = s.pkgmess,
  t.PkgSpecification_c = s.pkgspec,
  t.OnlineStatus_c = 1
 FROM EPCDBPROD.Erp.Part_UD t, EPCDBPROD.dbo.tmpProdPriceImport s
 WHERE t.PartNum_c = s.prodno and s.toUpdate = 1;'''
    db_cursor.execute(wsql)
    affected = db_cursor.rowcount
    db_cursor.commit()

    print('  ... done: %s were affected.' % affected)
    return affected

 

在sql server中创建的触发器:

CREATE trigger [Erp].[TR_CatpriceUpdate] 
on [EPCDBPROD].[Erp].[Part_UD] after UPDATE
AS

BEGIN

SET NOCOUNT ON;


declare @new_catprice decimal(14, 4) ;
declare @PartNum  nvarchar(50) ;

SELECT @new_catprice=CatPrice_c from inserted
select @PartNum=Partnum_c from inserted


IF (abs(@new_catprice - (select Catprice_c from deleted where PartNum_c=@PartNum)) >0.1)
 BEGIN

  insert into  dbo.PartCatpriceUpdate(Brand,Supplier,CasNumb,PartNum,CatPrice) 
  select i.Brand_c,i.Supplier_c,i.CasNumb_c,i.PartNum_c,i.CatPrice_c from inserted i,deleted j where i.PartNum_c=j.PartNum_c;
 END
END

SET NOCOUNT OFF;

 

现在我做测试:用上面的python更新part_ud表中几行catprice的值(价格都+1),用sql查询显示这几行的catprice字段都已经更新了,但是去dbo.PartCatpriceUpdate表查询,发现没有做插入。

 

补充:当我直接在数据库编辑窗口执行下面两条语句

update erp.part_ud set catprice_c=80 where partnumb_c='DG402-1g'  ;

update  erp.part_ud set catprice_c=80 where partnumb_c in ('A-JM271-5ml' ,'MT397-100mg') 

这两行语句执行后,该触发器都生效了,即在dbo.PartCatpriceUpdate表中已经将这两个货号的价格插入进去了。

问:怎样修改触发器才能让通过python程序更新价格后,也能触发update触发器呢?

请问下你用python对sql server数据库表做一般的插入或查询时,执行正常吗

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632