</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 ; 完成,希望能帮助一些初学者。

本文详细介绍了如何使用SQL创建自增长序列和触发器来实现ID自增长,并提供了针对不同格式需求的扩展方法。
1365

被折叠的 条评论
为什么被折叠?



