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;
/
oracle用觸發器實現插入記錄序列自增長(也可以指定記錄序號)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.