0

这是我在 Oracle PL/SQL 中的触发器的代码:

   create or replace trigger checkemp
   before insert or update 
   on employee
   for each row
   declare
   age number;
   begin
   if(:new.age>50)
   then
   insert into nonemp values(:new.emp,:new.empname);
   end if;
   end;
   /

当我输入以下语句时:

     insert into employee values(3434,'dfjkhsfk','dkjfhdfd','12-AUG-94',60);

甲骨文给了我错误

     ERROR at line 1:

     ORA-04098: trigger 'SYSTEM.AGEDETAILS' is invalid and failed re-validation

该代码应该将emp(员工编号)和empname(员工姓名)存储到表nonemp中。

请帮忙。

4

2 回答 2

0

运行以下语句:

SELECT
      UPPER ( OBJECT_NAME ),
      COUNT ( * )
FROM
      DBA_OBJECTS
WHERE
         OBJECT_TYPE = 'TRIGGER'
      AND STATUS = 'INVALID'
      AND OBJECT_NAME = 'AGEDETAILS'
GROUP BY
      UPPER ( OBJECT_NAME )
HAVING
      COUNT ( * ) > 1;

如果返回任何行,那么您应该有两个具有不同情况的同名触发器。在这种情况下,请丢弃一个触发器,可能是旧的(丢弃前验证)

于 2013-09-17T10:31:29.430 回答
0

您似乎有另一个触发器“agedetails”,请禁用它,然后重试。

于 2013-09-17T09:48:18.383 回答