Oracle插入数据并获取自增长序列ID方法
2013-12-31 16:34
721 查看
Oracle插入数据并获取自增长序列ID方法
分类:Java相关技术
数据库相关技术 2011-09-30 12:23
3100人阅读 评论(0)
收藏
举报
oraclehibernateinsertqueryeach2010
Oracle插入数据并获取自增长序列ID方法,本文要说的有两部分,一个是创建自增长序列,另一个是如何在插入数据后获取相应的自增长ID,具体如下:
创建表atable(id,a) ,其中id需要自增,那么我们来创建一个序列:
create sequence seq_atable minvalue 1 maxvalue 9999999 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后有效:) 所以不会存在取错值的问题。
本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/database/oracle/20100630/8645.html
相关文章推荐
- 关于oracle 11g中的索引.
- oracle 数据闪回
- oracle group by 中rollup和cube
- oracle自动导出Function、procedure等存储过程;
- oracle中的NVL,NVL2,NULLIF,COALESCE几个通用函数
- oracle 自动建表
- Oracle comment on的用法
- oracle 导入数据时对 & 和 ' 特殊字符处理
- oracle中优化left join的工作心得
- mysql sql server oracle 都表关联更新
- oracle exp direct 执行机制
- 远程登录ORACLE出现ORA-01017的解决
- oracle中的decode的使用
- 关于oracle中varchar2的最大长度
- 关于Oracle数据库优化的几点总结
- STS中使用hibernate连接oracle报错问题解决方法
- oracle 安装检测到系统的主 IP 地址是 DHCP 分配的地址
- 将 C# 的图像对象保存到 Oracle BLOB 字段中
- Oracle Shrink Tablespace
- 查询oracle字符集