我使用sequence和trigger方法实现了字段的自动增长,
create or replace trigger trig_autoinc
before insert on ClassInfo 
for each row 
begin 
  if (:new.Id is null) then
         select ClassInfo_seq.nextval into :new.Id from dual;
  end if;
end;
但是当插入不成功的时候确实出现了id的跳跃,就是虽然插入不成功,但是seq的值还是增长了。这个问题应该怎么解决。
另外,网上有人提出下面的方法防止跳id
create or replace trigger trdemo
before insert on t_name
ln number;
for each row 
begin 
select max(id) into ln from t_name;
new.id = ln+1;
end;
大家得这个方法如何?当数据量很大的时候效果如何? 
 
谢谢