我oracle 用的不多,目前还在学习阶段,因此希望大家不吝赐教 
我在system 下面建个表 books 里面有个ID属性 我想让他成为自增序列
我写了下面
CREATE SEQUENCE SEQname
 INCREMENT BY  1
 START WITH  1
 MAXVALUE  99999999CREATE TRIGGER TRGname
BEFORE  INSERT  ON BOOKS
REFERENCING
 NEW AS :NEW
FOR EACH ROW
Begin
   SELECT SEQname.NEXTVAL
     INTO :NEW.ID
     FROM DUAL;
End;                
这段代码是我在网上找的 我改的对不对 ,运行这段程序在哪运行? 我数据库是oracle10g
大家帮帮我

解决方案 »

  1.   

    出问题拉 我写完触发器后 End;   后不能退出到 SQL>这个符号下
    怎么回事 我把PLUS关了 试图
    SQL> insert into BOOKS values('ss','25');
    insert into BOOKS values('ss','25')
                *
    第 1 行出现错误:
    ORA-00947: 没有足够的值 
    没有成功啊 怎么回事?
      

  2.   

    因为触发器没有创建成功,所以插入的时候提示没有足够的值CREATE TRIGGER TRGname
    BEFORE INSERT ON BOOKS
    REFERENCING
    NEW AS :NEW
    FOR EACH ROW
    Begin
    SELECT SEQname.NEXTVAL
    INTO :NEW.ID
    FROM DUAL;
    End; 
    /在sqlplus 中执行的时候,需要加上一个/表示结束
      

  3.   

    ORA-04074: 无效的 REFERENCING 名称
      

  4.   

    NEW AS :NEW
            *
    第 4 行出现错误:
    ORA-04074: 无效的 REFERENCING 名称
      

  5.   

    经过大家指导 我触发器已经建成功了 
    在oracle10g的触发器管理 面显示 触发器主体
    Begin
       SELECT SEQname.NEXTVAL
         INTO :NEW.ID
         FROM DUAL;
    End;我BOOKS 表的结构是 ID NAME AGE
    可是我用 SQL> insert into BOOKS values('so','25');
    insert into BOOKS values('so','25')
                *
    第 1 行出现错误:
    ORA-00947: 没有足够的值
    这是怎么回事?
      

  6.   

    SQL> CREATE or Replace TRIGGER TRGname
      2  BEFORE INSERT ON test_10
      3  REFERENCING NEW AS NEW  --NEW
      4  FOR EACH ROW
      5  Begin
      6  SELECT SEQname.NEXTVAL
      7  INTO :NEW.id
      8  FROM DUAL;
      9  End;
     10  /Trigger created
      

  7.   

    insert into BOOKS (NAME,AGE)values('so','25');
      

  8.   

    xiaoxiao1984(笨猫儿^_^) 
    爱死你