高分求救一个简单问题!

luoyewuhen 2003-09-29 01:05:23
在我设计的表中有一个字增id字段,id自增我已经通过序列+触发器实现;我的问题是:在我向表中新加一条纪录后,我需要马上得到新增加的这条纪录的id字段的值。如果使用select max(id) from table,则在并发的情况下可能会出错;曾经有人建议用一个变量记录下id,然后返回,我现在就是不明白如何将这个变量返回到java程序中,请指教!
...全文
51 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mfc168 2003-09-30
  • 打赏
  • 举报
回复
很容易实现,你修改一下你的触发器,触发的时候,将该表的ID插入另一个表当中,而你只要去另一个表去读该ID就可以了,完全不用考虑并发同步的问题
VCBoyGirl 2003-09-30
  • 打赏
  • 举报
回复
select id.nextnvl as myid from dual;
通过Java程序附值给一个变量 vmyid
再插入数据就行了
insert into table (id,...) values(vmyid,....)

beckhambobo 2003-09-29
  • 打赏
  • 举报
回复
用包记录哪个ID吧
create package test_pack
as
p_id varchar2(10);
end;
/
create trigger a_tri
before insert on a
for each row
begin
select id.nextnvl from :new.id from dual;
select id.nextnvl into test_pack.p_id from dual;
end;
/
terry_guo 2003-09-29
  • 打赏
  • 举报
回复
如果考虑并发问题,那应该把记录区分开来,即在这个表中增加一个USER_ID字段,并且同一个用户在系统中仅能存在一个,这样你就可以把最大ID找出来了,否则按你目前的方法根本无法解决。(呵呵,我自己认为,如果有人能解决的话,请给我EMAL:YT_GUO@126.COM),先谢谢了
luoyewuhen 2003-09-29
  • 打赏
  • 举报
回复
大虾,说明白一点,真的不懂
  • 打赏
  • 举报
回复
在触发器中返回
  • 打赏
  • 举报
回复
在触发器中返回

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧