oracle在触发器中,如何获得自增id的值,并实现更新数据!

在项目中,有一张表,需要在用户在插入一条记录时,同时更新字段other_id,要求other_id的值为刚插入的记录的id(id为自增字段),请问怎么写sql啊?我的思路... 在项目中,有一张表,需要在用户在插入一条记录时,同时更新字段other_id,要求other_id的值为刚插入的记录的id(id为自增字段),请问怎么写sql啊?
我的思路如下:
表:
create table a (id int not null,nvarchar(20),other_id int);
触发器:
create trigger changeField_trigger after insert
on a
for each row
begin
update a set other_id=:new.id where id=:new.id;
end;
但是插入数据时会报错!请问高手怎么解决啊?
展开
 我来答
sxdtgsh
推荐于2016-05-27 · TA获得超过2221个赞
知道小有建树答主
回答量:913
采纳率:75%
帮助的人:806万
展开全部
create table t_a (id int not null, y varchar(20), other_id int);
create sequence SEQ_A_id
minvalue 1
maxvalue 9999999999;

create or replace trigger changeField_trigger before insert on t_a
-- 这个一定要用before不能用after。
for each row
begin
select seq_a_id.nextval
into :new.id
from dual;
:new.other_id := :new.id;
end;
-- 测试
insert into t_a(y) values ('test1');
insert into t_a(y) values ('test2');
insert into t_a(y) values ('test3');
select * from t_a;
D X OTHER_ID
---------------------------------------
1 test1 1
2 test2 2
3 test3 3
追问
id不是序列,怎么实现啦?
追答
id不是序列就复杂了,那你只能自己建一个表,插一条数据进去,数据就是你的最大的id号,每次用的时候取出来+1,取得时候要将记录锁住。
如果id列只是主键,无实际意义,建议你用序列。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式