java.sql.SQLException: ORA-04098: trigger 'RMMSIDEV.PRO_TR_A04' is invalid and failed re-validation
只是简单sql插入,但是不知道总是报错误啊

解决方案 »

  1.   

    试试在TOAD和PL/SQL中能不能插入数据?
      

  2.   


      CREATE OR REPLACE TRIGGER "RMMSIDEV"."PRO_TR_A04" BEFORE INSERT OR UPDATE
    ON PRO_T_A04
    FOR EACH ROW
    DECLARE
    BEGIN    IF INSERTING THEN
            :NEW.REGI_DTTM := SYSDATE;
        ELSIF UPDATING THEN
            :NEW.UPDT_DTTM := SYSDATE;
        END IF;
    END;GRANT CREATE FUNCTION ON GMFCTD08 TO rMmsidev;
    ALTER TRIGGER "RMMSIDEV"."PRO_TR_A04" ENABLE
     
      

  3.   


    SQL> create table PRO_T_A04(idx int,REGI_DTTM date,UPDT_DTTM date);Table createdSQL> 
    SQL> CREATE OR REPLACE TRIGGER PRO_TR_A04
      2  BEFORE INSERT OR UPDATE
      3  ON PRO_T_A04
      4  FOR EACH ROW
      5  BEGIN
      6      IF INSERTING THEN
      7          :NEW.REGI_DTTM := SYSDATE;
      8      ELSIF UPDATING THEN
      9          :NEW.UPDT_DTTM := SYSDATE;
     10      END IF;
     11  END;
     12  /
    1 row insertedSQL> select * from PRO_T_A04;                                    IDX REGI_DTTM   UPDT_DTTM
    --------------------------------------- ----------- -----------
                                          1 9/30/08 11: SQL> 贴出你的表结构,还有你的插入语句
      

  4.   


      CREATE TABLE "RMMSIDEV"."PRO_T_A04" 
       ( "LOCAL_CODE" VARCHAR2(2 BYTE) NOT NULL ENABLE, 
    "VNDR_CODE" VARCHAR2(5 BYTE) DEFAULT 0 NOT NULL ENABLE, 
    "HEAD" CHAR(2 BYTE) NOT NULL ENABLE, 
    "CODE_DESC" VARCHAR2(100 BYTE) DEFAULT ' ' NOT NULL ENABLE, 
    "REGI_DTTM" DATE DEFAULT sysdate, 
    "UPDT_DTTM" DATE, 
     CONSTRAINT "XPKPRO_T_A04" PRIMARY KEY ("LOCAL_CODE", "VNDR_CODE")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255  NOLOGGING 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "RMPARTTBS"  ENABLE
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "RMPARTTBS" ;
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."LOCAL_CODE" IS 'Áö¿ª ÄÚµå';
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."VNDR_CODE" IS '¾÷ü ÄÚµå';
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."HEAD" IS 'º»ºÎ ÄÚµå';
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."CODE_DESC" IS '¾÷ü¸í';
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."REGI_DTTM" IS 'µî·ÏÀϽÃ';
     
       COMMENT ON COLUMN "RMMSIDEV"."PRO_T_A04"."UPDT_DTTM" IS '¼öÁ¤ÀϽÃ';
     
      CREATE OR REPLACE TRIGGER "RMMSIDEV"."PRO_TR_A04" BEFORE INSERT OR UPDATE
    ON PRO_T_A04
    FOR EACH ROW
    DECLARE
    BEGIN    IF INSERTING THEN
            :NEW.REGI_DTTM := SYSDATE;
        ELSIF UPDATING THEN
            :NEW.UPDT_DTTM := SYSDATE;
        END IF;
    END;GRANT CREATE FUNCTION ON GMFCTD08 TO rMmsidev;
    /
    ALTER TRIGGER "RMMSIDEV"."PRO_TR_A04" ENABLE;
     
      

  5.   

    ORA-04098: trigger 'string.string' is invalid and failed re-validation 
    Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger. 
    Action: Options are to resolve the compilation/authorization errors, disable the trigger, or drop the trigger.