这个触发器用来做什么呢?INSERT的时候直接用SEQ.NEXTVAL不就结了吗?:NEW.USERCODE 是引用该字段新值的,怎么成变量给赋值了。

解决方案 »

  1.   

    触发器没有错误,具体原因不明:
    16:42:33 SQL> create table userinfo(usercode int);表已创建。已用时间:  00: 00: 00.15
    16:42:33 SQL>
    16:42:33 SQL> create sequence USERINFO_USERCODE start with 1 increment by 1;序列已创建。已用时间:  00: 00: 00.00
    16:42:33 SQL>
    16:42:33 SQL> CREATE OR REPLACE TRIGGER  USERINFO_TRIGGER
    16:42:33   2  BEFORE INSERT ON USERINFO
    16:42:33   3  FOR EACH ROW
    16:42:33   4  BEGIN
    16:42:33   5       SELECT USERINFO_USERCODE.NEXTVAL INTO :NEW.USERCODE FROM DUAL
    ;
    16:42:33   6  END;
    16:42:33   7  /触发器已创建已用时间:  00: 00: 00.15
    16:42:34 SQL> insert into userinfo values (5);已创建 1 行。已用时间:  00: 00: 00.16
    16:42:50 SQL> select * from userinfo;  USERCODE
    ----------
             1已用时间:  00: 00: 00.15
      

  2.   

    CREATE OR REPLACE TRIGGER "SCOTT"."" BEFORE
    INSERT ON "SCOTT"."USERINFO" FOR EACH ROW BEGIN
         SELECT USERINFO_USERCODE.NEXTVAL INTO :NEW.USERCODE FROM DUAL;
    END;建立表和序列以后,以上触发器代码测试通过。不知道你的序列是不是有问题。
    Ver:9.2
      

  3.   

    直接运行以下SQL:
    SELECT USERINFO_USERCODE.NEXTVAL  from dual;
    有没有结果?