CREATE TABLE authGroup
(
   authGroupID   INT  NOT NULL,   
   authGroupName VARCHAR2(20)
);
 ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID);  CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE;
 CREATE OR REPLACE TRIGGER authGroupTrigger
  BEFORE INSERT ON authGroup FOR EACH ROW   
BEGIN   
SELECT S_authGroupID.NEXTVAL INTO :authGroup.authGroupID FROM DUAL;
END;  建的一个自增触发器,可当:
INSERT INTO authGroup(authGroupName) VALUES('default');
时却出错:ORA-04098: trigger 'AUTHGROUPTRIGGER' is invalid and failed re-validation
大家帮忙看一下,触发器是不是错了

解决方案 »

  1.   

    没法子修改贴子,自己写错了一个地方:
    CREATE OR REPLACE TRIGGER authGroupTrigger 
      BEFORE INSERT ON authGroup FOR EACH ROW  
    BEGIN  
    SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL; 
    END;  呵呵,错误依旧
      

  2.   

    CREATE TABLE authGroup 

      authGroupID  INT  NOT NULL,  
      authGroupName VARCHAR2(20) 
    ); 
    ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID); CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE; 
    CREATE OR REPLACE TRIGGER authGroupTrigger 
      BEFORE INSERT ON authGroup FOR EACH ROW  
    BEGIN  
    SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL; 
    END;  建的一个自增触发器,可当: 
    INSERT INTO authGroup(authGroupName) VALUES('default'); 
    时却出错:ORA-04098: trigger 'AUTHGROUPTRIGGER' is invalid and failed re-validation 
    大家帮忙看一下,触发器是不是错了 
      

  3.   

    CREATE OR REPLACE TRIGGER authGroupTrigger 
      BEFORE INSERT ON authGroup FOR EACH ROW  
    BEGIN  
       SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL; 
    END;  
      

  4.   


    你的代码中存在中文";",修改后就可以了,参考如下:
    CREATE TABLE authGroup 

      authGroupID  INT  NOT NULL,  
      authGroupName VARCHAR2(20) 
    ); 
    ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID); CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE; CREATE OR REPLACE TRIGGER authGroupTrigger 
      BEFORE INSERT ON authGroup FOR EACH ROW  
    BEGIN  
    SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL;
    END;  
    /
    INSERT INTO authGroup(authGroupName) VALUES('default'); 
    SELECT * FROM authgroup;输出:
    1 default
      

  5.   

    我这边ok,
    QL> CREATE TABLE authGroup
      2  (
      3    authGroupID  INT  NOT NULL,
      4    authGroupName VARCHAR2(20)
      5  );Table created.SQL> ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID);Table altered.SQL> CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLSequence created.SQL> CREATE OR REPLACE TRIGGER authGroupTrigger
      2    BEFORE INSERT ON authGroup FOR EACH ROW
      3  BEGIN
      4   SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL;
      5  END;
      6  /Trigger created.
    SQL> insert into authgroup(authGroupName) values('testing');1 row created.SQL> select * from authgroup;AUTHGROUPID AUTHGROUPNAME
    ----------- --------------------
              1 testingSQL> insert into authgroup(authGroupName) values('testing2');1 row created.SQL> select * from authgroup;AUTHGROUPID AUTHGROUPNAME
    ----------- --------------------
              1 testing
              2 testing2
      

  6.   

    我都是把分号拿掉的,在代码中用oralceCommand 来执行,导致出这样的错误
      

  7.   

    发现用代码和用sql plus虽然同一语句话,但效果不同
    CREATE OR REPLACE TRIGGER authGroupTrigger 
      BEFORE INSERT ON authGroup FOR EACH ROW  
    BEGIN  
    SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL;
    END;  
     在sql plus中执行后,在代码中:insert into authgroup(authGroupName) values('testing')没有问题
    可如果放在代码中生成触发器,同样的Sql语句,再在代码中:insert into authgroup(authGroupName) values('testing')出现问题
    ORA-04098: trigger 'AUTHGROUPTRIGGER' is invalid and failed re-validation