Обратите внимание на разницу:
CREATE OR REPLACE TRIGGER TR6
---
против.
ORA-04098: trigger 'Username.TR' is invalid
--
Кажется, что в этой таблице есть еще один триггер, который является недействительным. Либо исправьте, либо отбросьте.
Проверьте триггеры, запустив
select table_name, trigger_name, trigger_type from user_triggers order by 1, 2;
[Пример]
Это основанный на таблице EMP Скотта. Триггер намеренно использует :old.empnox
, столбец, который не существует. Это приводит к ошибке, которую вы получили:
SQL> create table prac14 as select empno, ename, sal, deptno
2 from emp where 1 = 2;
Table created.
SQL>
SQL> create or replace trigger tr6
2 before update on emp
3 for each row
4 begin
5 insert into prac14 (empno,ename,sal,deptno)
6 values(:old.empnox,:old.ename,:old.sal,:old.deptno);
7 end;
8 /
Warning: Trigger created with compilation errors.
SQL>
SQL> update emp set sal = 3000 where deptno = 10;
update emp set sal = 3000 where deptno = 10
*
ERROR at line 1:
ORA-04098: trigger 'SCOTT.TR6' is invalid and failed re-validation
Но, если код триггера исправлен, все работает нормально:
SQL> create or replace trigger tr6
2 before update on emp
3 for each row
4 begin
5 insert into prac14 (empno,ename,sal,deptno)
6 values(:old.empno,:old.ename,:old.sal,:old.deptno);
7 end;
8 /
Trigger created.
SQL>
SQL> update emp set sal = 3000 where deptno = 10;
3 rows updated.
SQL>
Я предлагаю вам опубликовать то же самое, выполненное в вашей базе данных.