SQL高级应用,触发器的难题?
想做一个原料成本核算单价自动触发影响关联表数据:
当原料清单表的 HSDJ字段被修改时,自动影响到成本卡表的原料成本单价,并将金额字
段算出来,然后将金额按产品ID合计再关联到每个产品下面,改写产品的成本价:
大慨流程是:
清单表: HSDJ <---修改
|
成本卡表: 原料单价字段 、金额字段 <--发生改变
|
产品表: 成本字段 <---发生改变
我在清单表下面写了一段触发器:
CREATE TRIGGER CBK
ON [dbo].[CYQT_YLQD]
AFTER UPDATE
AS
DECLARE @OLD_HSDJ DECIMAL(12,2)
UPDATE CYQT_CBKSZB
SET CYQT_CBKSZB.HSDJ= ISNULL( A.HSDJ,0),
CYQT_CBKSZB.JE = ISNULL( A.HSDJ,0) * ISNULL( CYQT_CBKSZB.BJDWCBBL ,0)
FROM CYQT_CBKSZB , INSERTED AS A
WHERE
CYQT_CBKSZB.YLH = A.YLPH
清单表结构: 原料ID(不重复),原料名,核算单价
成本卡表: 产品ID,产品名,原料ID,核算单价,数量,小计 注意:不同的产品可能有多个相同的原料ID
产品表:产品ID,产品名,成本价 注意:成本价来源于成本卡表按产品ID sum(小计)
这个应用逻辑太复杂了,求高手指教
------解决方案--------------------
如果是清单表修改了才触发,那么触发器应该是建立在清单表上的
CREATE TRIGGER CBK
ON [dbo].[HSDJ]
AFTER UPDATE
……
这样才行,批量化操作是上面意思,如果你指的是在你的批量化update操作,这样的操作中有1000个语句,那应该会触发1000次,
但如果只是一个udpate语句,一次更新了1000行,那应该是触发了1次吧。