oracle用觸發器實現插入記錄序列自增長(也可以指定記錄序號)

create or replace trigger temp_trigger
  before insert on temp  
  for each row
declare
  interval_id number(16);

begin
if :new.id is  null then

  select min(new_id) into interval_id from (select bb+1 new_id from 
     (select id , lag(id,1,0) over(order by id) bb  from temp) where id-bb>1);
  if interval_id is not null then
  :new.id := interval_id;
  else
  --  select temp_seq.nextval into temp_id from dual;
  --  :new.id := temp_id;
  select max(id) into interval_id from temp;
  :new.id := interval_id+1;
  end if;

end if;
end temp_trigger;
/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章