用触发器 如:create or replace trigger before_insert_zfkh_yj before insert on zfkh_yj for each row declare -- local variables here id CHAR(11); begin SELECT nvl(MAX(yjbh),'0000000000') INTO id FROM zfkh_yj where yjbh like :new.zdyj_dm||'%'; :new.yjbh:=substr(:new.zdyj_dm,1,5)||lpad(to_number(substr(id,6))+1,6,'0'); end before_insert_zfkh_yj;
刚使用sequence时我觉得不甚好用,现在用多了,感觉这种设计还是不错的,比较灵活。唯一ID可以使用 sequence.nextval 来获取,(还可以进行格式控制)
比如一个序列1,2,3,4,5。
现在我取了5,下个就是1了,可是现在数据库中有1的记录,但是2的记录被删除了,我想下一个不取1而是取2应该怎么办呢?希望不要在程序中控制
如:create or replace trigger before_insert_zfkh_yj
before insert on zfkh_yj
for each row
declare
-- local variables here
id CHAR(11);
begin
SELECT nvl(MAX(yjbh),'0000000000') INTO id FROM zfkh_yj where yjbh like :new.zdyj_dm||'%';
:new.yjbh:=substr(:new.zdyj_dm,1,5)||lpad(to_number(substr(id,6))+1,6,'0');
end before_insert_zfkh_yj;