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