当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle插入数据时获取自增ID
发布时间:2011/1/12 11:02:12 来源:城市学习网 编辑:ziteng
  自增字段:
  表atable(id,a) id需要自增 首先建立一个序列:
  create sequence seq_atable minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache
  有二种方式使用自增字段:
  使用序列+触发器实现自增,插入语句不需要管自增字段
  如:create or replace trigger trg_atable before insert on atable for each row begin select seq_atable.nextval into :new.id from dual; end;
  插入数据:insert into atable(a) values('test');
  注:我创建了sequence 和trigger :,之后在procedure中插入数据,插入的时候没有管ID字段,在应用中,使用了hibernate,虽然hibernate在增加记录的时候也会处理ID,但是添加记录之后,查询记录发现,ID还是根据序列和触发器的规则设置的
  仅使用序列,需要在插入数据时,自增字段插入序列下一个值
  如:insert into atable(id,a) values(seq_atable.nextval,'test');
  三、返回刚插入记录的自增字段值
  如上面的例子,我们插入一条记录后,我想马上返回刚插入的记录的ID号,我该怎么处理呢?
  首先要解决自增字段的问题,上面的二种方法哪种更适合这种用法呢? 建议使用第二种自增序列,否则处理起这个问题来比较麻烦。
  使用自增字段的第二种方法,在插入一条记录后马上执行一下下面的语句即返回当前插入数据的ID。
  $query="select seq_atable.currval from dual";
  seq_atable.currval 的值只有在同一次会话中,发生seq_atable.nextval后有效:) 所以不会存在取错值的问题。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved