我有以下触发器,但它不起作用,我没有收到任何错误,它根本不起作用。
CREATE OR REPLACE TRIGGER PROYECTO.ACTUALIZAPRECIOSTOTALFACTURA
AFTER INSERT
ON PROYECTO.DOCUMENTOS_DETALLE
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
update DOCUMENTOS
set doc_total=doc_total+:new.doc_det_precio
where doc_numero = :new.doc_numero;
END;
如果我删除“where”条件,它确实有效,但不是我需要的方式(它在documentos.doc_total上添加了doc_det_precio,但是在DOCUMENTOS表上的firt记录中,总是。我应该做什么错?
表格是:
的 DOCUMENTOS
DOC_numero
DOC_total
DOCUMENTOS_DETALLE
DOC_DET_id
DOC_numero
DOC_DET_precio
答案 0 :(得分:0)
您的where
条款应该是:
where doc_numero = :new.doc_det_doc_numero;
您可能还想重新考虑尝试在主表上保持最新总和。它很容易失去同步。通常,在需要时计算总数更合适:
select m.doc_numero
,sum(d.doc_det_precio) as doc_total
from documentos m
join documentos_detalle d on (d.doc_numero = m.doc_numero)
group by m.doc_numero