一个表table1有两字段id 和name ,其中id是序号列。
现在有触发器
CREATE OR REPLACE TRIGGER "TRI_table1" BEFORE
INSERT ON "table1" FOR EACH ROW 
begin
   select table1_ID.nextval into :new.table1_ID from dual;
end;现在我通过前台客户端程序想要插入一行新数据,该怎么写呢?
insert into table1(id,name) values( table1_id.nextval ,'aa') 
这样写会导致ID列的数字跳号,比如第一行的ID是2,下一行的就成了4直接写insert into table1(id,name) values(table1_id.currval,'aa')也不行我该怎么写呢?请大家帮忙,谢谢。

解决方案 »

  1.   

    insert   into   table1(id,name)   values(   table1_id.nextval   ,'aa')   
    用它不成功是因为你的trigger里被加了1,然后这句SQL又加了1,所以会跳号你尝试一下下面的
    insert   into   table1(id,name)   values(table1_id.currval+1,'aa')
      

  2.   

    第一句,如果你去掉trigger应该就可以的
      

  3.   

    insert into table1(id,name) values (table1_id.currval-1,'aa') 
      

  4.   

    客户端程序直接:
    insert   into   table1(name)   values('aa')