CREATE OR REPLACE TRIGGER your_trigger_name
   BEFORE INSERT
   ON your_table
   FOR EACH ROW
DECLARE
L_ID   NUMBER;
BEGIN
  SELECT NVL(MAX(ID),0) INTO L_ID FROM your_table;
 :NEW.ID:=L_ID+1;
EXCEPTION
   WHEN OTHERS
   THEN
      NULL;
END;
/

解决方案 »

  1.   

    可以用序列实现啊
    create sequence seq_id
    minvalue 1
    start with 1
    increment by 1;insert into table tablename values(seq_id.nextval,....);
      

  2.   

    to  caspling(迷糊猫)   很感谢SELECT NVL(MAX(ID),0) 
           ~~~是什么用的.能给我解释一下吗 ?
    我都看的不是很明白  刚学
    谢谢
      

  3.   

    NVL()是oracle函数,函数功能是如果max(id)的值为空,则返回后面那个参数的值,即0。我在这里用了这个函数是考虑到如果该表为空,则,max(id)的值为空,此时id值应从1开始。