日期:2014-05-17  浏览次数:20795 次

ORACLE表主键自增长问题
在做一个项目时遇到这样的问题: 有一张员工表 用员工ID作为主键, 员工ID的格式为: 某个字母加数字编号
  例如: E100001 则代表 某个员工, B100001则代表某个经理 我现在该怎么做 能让它自己增加后面部分的数字
  数据持久化层我用的是hibernate...

------解决方案--------------------
员工与经理要使用不同的序列码?
------解决方案--------------------
楼主的问题实际上,就是自定义主键生成策略。Hibernate提供了“自定义主键生成策略”的机制了,楼主可以以“Hibernate自定义主键生成策略”做为关键字去查询相关资料,很多的。希望说的能帮上楼主。
------解决方案--------------------
你可以建一个 sequence 

之后顶一个一个函数.每次插入用起函数生产这个主键
------解决方案--------------------
应该是截取ID,把数字取出来自增。可以用触发器来做。
------解决方案--------------------
建两个序列,然后拼接一下就行了 
insert into A values('E'||sequence.nextval)
差不多就这个意思,你自己动手试一下
------解决方案--------------------
这种情况,你可以采用以下做法:
1.Hibernate的主键生成策略改为:assigned
2.在数据库创建一个Sequence
3.每次为ID赋值时,先取出sequence.nextvalue ,再将对应的角色字母加上去。