`
wlh269
  • 浏览: 447499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不依赖于序列,只用触发器实现主键自增

阅读更多
哈!各位大虾,帮我,我想要这样的触发效果:
表结构例如是这样:create table TB(N char(10) primary key,M char(10))
当我首次将数据插入列M的时候,N自动生成0001
再插入列M第二行的时候,N自动生成0002
以此类推,每插入M时,N就自动递增1,前面的0不能省略,同时还有个要求,该触发器不能依赖序列。

create or replace trigger tri_input_no 
before insert on mytb 
for each row 
begin 
declare 
cursor c is 
select 's' from mytb; 
rec varchar2(6); 
begin 
open c; 
fetch c into rec; 
if c%rowcount = 0 then 
select '0001' into :new.mname from dual; 
else 
select (select lpad(substr(max(mname), 2) + 1, 4, '0') from mytb) 
into :new.mname 
from dual; 
end if; 
end; 
end; 


刚写出来,测试过的,把表和字段改下就行了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics