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这样显示并且自动增长。请问如何实现?
展开
 我来答
匿名用户
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() 不是很费效率吗?你可以使用序列进行转换

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式