oracle中新建一个触发器实现数字以01 02 03这样的形式自动递增
createorreplacetriggercarrier_insertbeforeinsertontb_code_carrierforeachrowbeginif:ne...
create or replace trigger carrier_insert
before insert on tb_code_carrier
for each row
begin
if :new.code_carrier is null then
select nvl(max(to_number(code_carrier)), 0) + 1
into :new.code_carrier
from tb_code_carrier;
end if;
end carrier_insert;
原来是这样写的,但是我想把数字以01,02这样显示并且自动增长。请问如何实现? 展开
before insert on tb_code_carrier
for each row
begin
if :new.code_carrier is null then
select nvl(max(to_number(code_carrier)), 0) + 1
into :new.code_carrier
from tb_code_carrier;
end if;
end carrier_insert;
原来是这样写的,但是我想把数字以01,02这样显示并且自动增长。请问如何实现? 展开
1个回答
2013-09-03
展开全部
使用如下函数实例
select trim(to_char(1,'00')) from dual; --转换后的效果就是:01
你上面的语句可以这样写:
if :new.code_carrier is null then
select to_char(nvl(max(to_number(code_carrier)), 0) + 1, '0000') -- 几位就写几个0
into :new.code_carrier
from tb_code_carrier;
end if;
不过每次都需要 max() 不是很费效率吗?你可以使用序列进行转换
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询