使用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