触发,在第1行ORA 04098

时间:2015-12-22 02:51:40

标签: oracle plsql

嗨我设置了一些触发器,我无法通过此错误

SET SERVEROUTPUT ON

CREATE OR REPLACE TRIGGER trigger2
  BEFORE INSERT ON new_donation
  FOR EACH ROW
  --WHEN (new.contamt <= 10)
DECLARE

v_idno          VARCHAR2(5);
v_driveno       VARCHAR2(3);
v_contdate      DATE;
v_contamt       NUMBER(6,2);

BEGIN
 SELECT IDNO, DRIVENO, CONTDATE, CONTAMT INTO v_idno, v_driveno, v_contdate, v_contamt
 FROM OLD_DONATION2
 WHERE IDNO = :new.idno;
 IF :new.contamt < 50 THEN
     RAISE_APPLICATION_ERROR (-20001, 'CONTRIBUTION TOO LOW FOR ' 
        || :new.idno || ' ' || :new.contamt);
   END IF;

END;
/
SET SERVEROUTPUT OFF

另一部分

DECLARE
  v_idno        new_donation.idno%TYPE := '&in_idno';
  v_driveno     new_donation.driveno%TYPE := '&in_driveno';
  v_contdate    new_donation.contdate%TYPE := '&in_contdate';
  v_contamt     new_donation.contamt%TYPE := &in_contamt;
BEGIN
  INSERT INTO new_donation
    VALUES (v_idno, v_driveno, v_contdate, v_contamt);

END;
/

我在trigger2处插入值时出现此错误。

  

第1行的错误:ORA-04098:触发&#39; XXXXXXXXX.NEW_DONATION&#39;是   无效且无法重新验证ORA-06512:第7行

我想要做的就是将用户输入的一些值插入到这个新表中,该表为空。 当捐赠量<&lt; 10我想要一个错误。

1 个答案:

答案 0 :(得分:0)

请按照以下步骤操作。

运行此查询select status from all_objects where object_name = 'TBL_USER_TRIGGER' and object_type = 'TRIGGER';

如果状态无效,请运行alter trigger trigger2 compile;

然后运行show errors

它会为你抛出错误。你需要解决这些问题。