Триггер с указанным курсором ошибка: триггер недействителен и не прошел повторную проверку - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь создать 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' недействителен и не выполнен. повторное подтверждение

Почему это происходит?

1 Ответ

0 голосов
/ 29 июня 2019

Я думаю, что вы использовали неправильные имена столбцов / таблиц или неверные типы данных используются при вставке данных в TBL_TRXMANHOURS. И, конечно же, существует бесконечный цикл, вы должны сделать некоторые условия, чтобы сделать его конечным

Oracle будет пытаться перекомпилировать недопустимые объекты по мере их обращения. Здесь триггер недействителен

select * from user_errors where type = 'TRIGGER' and name = 'AUTOMANHOUR'

Вы можете попробовать запрос выше, чтобы найти фактическую ошибку.

Ура !!

...