oracle中产生固定格式的自增长序列

3 篇文章 0 订阅

</pre><span style="font-family:SimSun">写代码的时候经常遇到需要表格中的ID自增长,同时有些客户可能需要一些特定的格式;比如:  K0001、K0002;更有甚者 需要 k+年份+00001 ,例如: K201500001、K201500002;等等。需要怎么做呢:</span><p></p><p><strong><span style="font-family:SimSun; font-size:18px">其实很简单,首先像以前一样,建一个sequence </span></strong></p><p><strong><span style="font-family:SimSun; font-size:18px"></span></strong></p><pre name="code" class="sql" style="font-weight: bold;">create or replace sequence test_seq 
minvalue 1 
maxvalue 99999 
start with 1 
increment by 1 
nocache;

然后建立一个触发器

<pre name="code" class="sql">create or replace trigger test_tg 
before insert on test----test是表名
for each row 
declare  
begin select  test_seq.nextval into: new.id (-----这个id字段是test表中需要自增长的字段) from dual;
end trigger test_tg ;

 

如果按照上述描述,我们已经完成了一般的自增长序列

但是因为客户的不同需求,所以我们进行了一些修改,比如需要K00001、K00002;

第一步一样建立一个序列,然后触发器是这样写的

<pre name="code" class="sql">create or replace trigger test_tg 
before insert on test----test是表名
for each row
declare
begin 
select  'K' || lpad(test_seq.nextval into,5,'0'): new.id (-----这个id字段是test表中需要自增长的字段) 
from dual;
end trigger test_tg ;  


 完成; 

如果是需要 K+年份+00001,比如 K201500001、K201500002,

第一步还是一样,然后在触发器中的写法

<pre name="code" class="sql">create or replace trigger test_tg 
before insert on test----test是表名
for each row
declare
begin 
select  'K' ||to_char(sysdate,'yyyy')|| lpad(test_seq.nextval into,5,'0'): new.id (-----这个id字段是test表中需要自增长的字段)
from dual;
end trigger test_tg ; 


 

完成,希望能帮助一些初学者。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值