怎么在插入oracle记录的时候同时得到自动增长的ID值(未解决)
2011-08-20 23:37
756 查看
。。。
创建表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后有效:) 所以不会存在取错值的问题。
创建表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后有效:) 所以不会存在取错值的问题。
相关文章推荐
- oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- oracle中插入一条数据id自动增长,插入之后得到这个id
- oracle表中有一列id她是自动增长的,插入一条数据时怎么取得id的值
- springMVC中jdbcTemplate接口类插入记录后得到自动增长的id
- 如何得到上一次插入记录后自动产生的ID
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- mybatis 插入数据时候 同时得到主键的id 处理好一起插入别的字段
- select @@identity得到上一次插入记录时自动产生的ID
- 回复:在MsSql、Access两种数据库中插入记录后马上得到自动编号的ID值
- 在插入一条记录后 取得自动增长ID
- 如何得到上一次插入记录后自动产生的ID
- 在MsSql、Access两种数据库中插入记录后马上得到自动编号的ID值
- hibernate怎么得到插入数据的主键 或者自动增值的id
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- Oracle实现插入记录ID自增长