设为首页 收藏本站
查看: 355|回复: 0

[经验分享] Oracle插入数据时获取自增ID

[复制链接]

尚未签到

发表于 2016-7-28 11:11:05 | 显示全部楼层 |阅读模式
原来的写太乱了,估计也是别的地方COPY过来的。
简单点,
就是创建一个SEQUENCE,通过它来获取自增ID,
CREATE SEQUENCE MY_TABLE_SEQ; --创建了一个SEQUENCE

如何用?
插入的时候这样:
INSERT INTO MY_TABLE (ID) VALUES (MY_TABLE_SEQ.NEXTVAL);

要把当前这个ID返回可以这样:
SELECT MY_TABLE_SEQ.CURRVAL FROM DUAL;


注意:
MY_TABLE_SEQ.CURRVAL 要和 MY_TABLE_SEQ.NEXTVAL配合起来用。
先MY_TABLE_SEQ.NEXTVAL了,才能取MY_TABLE_SEQ.CURRVAL。

-------------------------------------历史的分割线----------------------------------
一、分页显示
与PGsql mysql 使用limit 不同oracle可以使用以下语句进行分页处理:
$query= 'Select * from (Select A.*,RowNum Rn from ('.$query.') A Where RowNum <='.$end.') where Rn>='.$start;

说明:
$query:是你需要分页显示的SQL
RowNum:是返回结果集的记录序号
$start $end:是分页的起始序号
二、自增字段:
表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');

仅使用序列,需要在插入数据时,自增字段插入序列下一个值
如: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后有效:) 所以不会存在取错值的问题。

~~~~~~~~~~~~~~~~~~~~~~~~
Microsoft SQL Server里获取自增ID
<!- Microsoft SQL Server ->
<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
  insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
  <selectKey resultClass="int" keyProperty="id" >
  SELECT @@IDENTITY AS ID
  </selectKey>
</insert>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250656-1-1.html 上篇帖子: Oracle插入数据时获取自增ID 下篇帖子: Oracle 系统设置查询sql列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表