首页 > 解决方案 > 在 Oracle PL/SQL 中使用触发器改变触发器错误

问题描述

我正在学习 Oracle,但在执行我创建的触发器时遇到了问题。我想要做的是这个触发器自动更新 OCEX_COMI 表的 Pago_Com 列。

create or replace trigger ocex_comi_total
after insert or update of id_gt on ocex_comi
for each row
begin
update ocex_comi cm set
cm.PAGO_COM = (select uea.total_x_pnp from OCEX_UEA uea                   
                join OCEX_GUIA_TRANSITO gt on uea.N_MINA = gt.dest_entreg
                where gt.cod_gt=cm.id_gt)
where cm.id_gt = (select gt.cod_gt from ocex_guia_transito gt 
                  JOIN ocex_uea uea on uea.N_MINA=gt.DEST_ENTREG 
                  where gt.cod_gt=cm.id_gt);    
end;

我的表以下列方式相关:我从 OCEX_UEA 表的“n_mina”字段中获得的“total_x_pnp”又与“OCEX_GUIA_TRANSITO”表的“gt.dest_entreg”列相关,但是有是我的“where”子句的问题,并且通过将“OCEX_GUIA_TRANSITO”标签的“cod_gt”列与“OCEX_COMI”表的“ID_GT”列相匹配,因为它没有选择任何行,也没有进行比较和生成“突变触发问题”错误。一些帮助,以便您可以执行插入并验证字段“OCEX_COM.ID_GT”,以便可以执行触发器。或者我应该通过存储过程来改变它?

谢谢你。

标签: oracleplsql

解决方案


推荐阅读