我尝试使用以下代码在插入触发器之后创建Oracle:
CREATE OR REPLACE TRIGGER AutoManhour
AFTER INSERT ON TBL_MSTPROJECT
FOR EACH ROW
DECLARE
CURSOR c_Section IS
SELECT IDSECTION AS IDSECTION FROM TBL_MSTSECTIONHR;
v_Section c_Section%ROWTYPE;
BEGIN
OPEN c_Section;
LOOP
FETCH c_Section INTO v_Section;
INSERT INTO TBL_TRXMANHOURS (ID_SECTION,INPUTBY_TRXMANHOURS,INPUTON_TRXMANHOURS,ID_PROJECT)
VALUES (v_Section.IDSECTION,'IT_ROBOT',SYSDATE,:new.IDPROJECT);
END LOOP;
CLOSE c_Section;
END AutoManhour;
/
但是它检索到错误:
ORA-04098:触发器“ DEPEEL.AUTOMANHOUR”无效且失败 重新验证
为什么会这样?
答案 0 :(得分:0)
我认为在将数据插入TBL_TRXMANHOURS
时,您一定使用了错误的列/表名或使用了错误的数据类型。当然,有一个无限循环,您应该设定一些条件使其变为有限状态
Oracle将尝试重新编译引用的无效对象。这里的触发器无效
select * from user_errors where type = 'TRIGGER' and name = 'AUTOMANHOUR'
您可以尝试上述查询以查找实际错误。
干杯!