oracle创建自增序列号触发器

哈!各位大虾,帮我,我想要这样的触发效果:表结构例如是这样:createtableTB(Nchar(10)primarykey,Mchar(10))当我首次将数据插入列M... 哈!各位大虾,帮我,我想要这样的触发效果:
表结构例如是这样:create table TB(N char(10) primary key,M char(10))
当我首次将数据插入列M的时候,N自动生成0001
再插入列M第二行的时候,N自动生成0002
以此类推,每插入M时,N就自动递增1,前面的0不能省略,同时还有个要求,该触发器不能依赖序列。
请帮帮我。
gouglee谢谢你的回答,高手!但是我把你的代码改过来用却怎么也有问题,麻烦你安装我那个表把字段和表名字改下你的触发器好吗?我给你加分。
展开
 我来答
guoqlee
2008-05-21 · TA获得超过313个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:149万
展开全部
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;

刚写出来,测试过的,把表和字段改下就行了

按你的表:

create or replace trigger tri_input_no_test
before insert on TB
for each row
begin
declare
cursor c is
select 's' from TB;
rec varchar2(6);
begin
open c;
fetch c into rec;
if c%rowcount = 0 then
select '0001' into :new.N from dual;
else
select (select lpad(substr(max(N), 2) + 1, 4, '0') from TB)
into :new.N
from dual;
end if;
end;
end;
wastelandxf
2008-05-08 · TA获得超过281个赞
知道小有建树答主
回答量:400
采纳率:25%
帮助的人:247万
展开全部
为什么不能用序列呢?
对你的程序有什么影响?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式