【发布时间】:2021-02-16 19:15:04
【问题描述】:
SELECT CIF_ID,
SUM (IN_VERIFIED_DEBT + IN_FAC_WITH_OTHER + IN_FAC_WITH_BANK)
from LOS_CIF_INDV
WHERE STATUS= 'ACTIVE'
GROUP By CIF_ID;
我想在用户将客户端操作为更新后再次更新总列,插入但它给出了错误
ORA-04098:触发器 'RLOS138.UPDATE_IN_TOTAL_COMMIT' 无效并且重新验证失败
CREATE OR REPLACE TRIGGER UPDATE_IN_TOTAL_COMMIT
AFTER UPDATE ON
LOS_CIF_INDV
FOR EACH ROW
DECLARE
inactive_id number;
BEGIN
inactive_id:=
:new.IN_VERIFIED_DEBT + :new.IN_FAC_WITH_OTHER + :new.IN_FAC_WITH_BANK;
UPDAte LOS_CIF_INDV
SET IN_TOTAL_COMMIT = inactive_id
WHERE CIF_ID = :NEW.CIF_ID;
END ;
/
我又试了一次
CREATE OR REPLACE TRIGGER RLOS138.UPDATE_IN_TOTAL_COMMIT
AFTER UPDATE ON RLOS138.LOS_CIF_INDV
FOR EACH ROW
DECLARE
inactive_id number;
BEGIN
SELECT SUM (IN_VERIFIED_DEBT+IN_FAC_WITH_OTHER+IN_FAC_WITH_BANK)
into inactive_id
from LOS_CIF_INDV
WHERE STATUS= 'ACTIVE'
and CIF_ID=:NEw.CIF_ID;
update LOS_CIF_INDV
set IN_TOTAL_COMMIT = inactive_id
where CIF_ID = :NEW.CIF_ID;
END ;
/
【问题讨论】:
-
ORA-04098 告诉您触发器代码中存在编译错误。如果您没有使用告诉您这些错误是什么的 IDE,您可以使用以下查询找到它们:
select * from all_errors where owner = 'RLOS138' and name = 'UPDATE_IN_TOTAL_COMMIT' ;(不确定您是否以 RLOS138 连接 - 如果您是查询 USER_ERRORS。) -
除此之外,您的流程逻辑还不清楚。 CIF_ID 是 LOS_CIF_INDV 的主键吗?
-
是的,它是主键
-
1 和 2 没有选择行。 @ADC 但是当我编辑记录中的一列时,它会给出触发错误
标签: oracle oracle11g triggers oracle10g