CREATE TABLE FOO
 (
    INDEXID                          INT                            NOT NULL,
    ABC                            VARCHAR2(128),
    DEF                            VARCHAR2(128),
    PRIMARY KEY (INDEXID)
 ) TABLESPACE TEMP;
 
 CREATE SEQUENCE FOO_INDEXID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999 CYCLE NOCACHE;
 
 CREATE OR REPLACE TRIGGER INSERT_FOO_INDEXID
 BEFORE INSERT ON FOO
 REFERENCING
     NEW AS new
     OLD AS old
 FOR EACH ROW
 BEGIN
     SELECT FOO_INDEXID.NEXTVAL INTO :new.INDEXID FROM DUAL;
 END;表和序列是能创建成功的,触发器好象执行后没任何反应

解决方案 »

  1.   

    CREATE TABLE FOO 
     ( 
        INDEXID                          INT                            NOT NULL, 
        ABC                            VARCHAR2(128), 
        DEF                            VARCHAR2(128), 
        PRIMARY KEY (INDEXID) 
     ) TABLESPACE TEMP; 
      
     CREATE SEQUENCE FOO_INDEXID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999 CYCLE NOCACHE; 
      
     CREATE OR REPLACE TRIGGER INSERT_FOO_INDEXID 
     INSTEAD OF INSERT
     ON FOO 
     FOR EACH ROW
     BEGIN 
         INSERT INTO FOO(INDEXID,ABC,DEF) VALUES(FOO_INDEXID.NEXTVAL,:NEW.ABC,:NEW.DEF);
     END; 
      

  2.   

    我把楼上的sql语句放在sql plus里执行后还是没有成功创建触发器
      

  3.   

    去掉
     REFERENCING
         NEW AS new
         OLD AS old 
    试试
      

  4.   

    改下INDEXID 的类型,用number看看