过程如下,想在oracle10g中实验一下自动增长序列,触发器实现。表 test,
两个列: id, name
序列 innerid
自动增长不用触发器,向表中插入数据
insert into test values (innerid.nextval,'aa')
成功现在用触发器,表中插入行时,触发器自动将innerid.nextval写入id中
create trigger test_id
before insert on test
for each row
BEGIN
    SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL
END
这条语句每次运行都会弹出一个网页,里面就一项~~ :new[_______] ,让我输入一个值,实验了各种能想到的值,均提示  ORA-00900: 无效 SQL 语句比较无奈。
请各位大大看看是什么问题。

解决方案 »

  1.   

    create trigger test_id
    before insert on test
    for each row
    BEGIN
      SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;--少个分号
    END;
      

  2.   

    SQL> DROP TABLE test PURGE;
     
    Table dropped
     
    SQL> 
    SQL> CREATE TABLE test
      2  (ID NUMBER(20),
      3   NAME VARCHAR2(20)
      4  )  ;
     
    Table created
     
    SQL> 
    SQL> create or replace trigger test_id
      2  before insert on test
      3  for each row
      4  BEGIN
      5    SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;
      6  END;
      7  /
     
    Trigger created
     
    SQL> INSERT INTO test(NAME) VALUES('aa');
     
    1 row inserted
     
    SQL> SELECT * FROM test;
     
                       ID NAME
    --------------------- --------------------
                        3 aa
     
    SQL> 
      

  3.   


    create or replace trigger TB_Trig
      before insert
      on TB
      for each rowbegin  select SEQ_TB.nextval into :new.Id from dual;end;
      

  4.   

    SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL ;
      

  5.   


    SQL> create table test(id number,name varchar2(20));表已创建。SQL> create sequence innerid
      2  start with 1
      3  increment by 1
      4  /序列已创建。SQL> edi
    已写入 file afiedt.buf  1  create or replace trigger test_id before insert on test
      2  for each row
      3  BEGIN
      4    SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;
      5* END;
    SQL> /触发器已创建SQL> insert into test(name) values('fogeater');已创建 1 行。SQL> select * from test;        ID NAME
    ---------- --------------------
             1 fogeater