永发信息网

(java,oracle)web系统如何生成20091200001,20091200002这样的序列号,有多个用户同时操作。

答案:3  悬赏:70  手机版
解决时间 2021-04-16 03:35
J2EE项目,有个表主键需要产生20091200001,20091200002这样的序列号。该如何实现?目前我做的是:添加一条新纪录的时候是查找数据库编号最大的,之后加1。但是当有两个用户在不同机子上同时添加记录的时候会从数据库查到相同的编号,这样其中一个用户保存这条数据后,另外一个用户就保存不了了。请教这个该如何实现。还有就是oracle可以设置自动产生这样序列号主键吗?
最佳答案


假设 id 为序列值


select to_char(sysdate,'yyyymm')||substr('00000',0,5-length(id))||id into result_id from dual;

全部回答
J2EE项目中我们不期望项目依赖于某个特定的数据库。如果需要更换数据库,会面临重构代码的窘境。此外持久化时,表的ID最好不是自然键,即主键值最好不要包含业务逻辑(比如楼主所说的时间)。如果一张表中一定需要创建日期的话,可以增设日期字段。 生成id,推荐使用已有的主键生成策略,如:uuid等等。 具体实现方法:如: @Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid", strategy="uuid") @NotNull private String id; 当然我们需要:import javax.persistence.Column;import javax.persistence.GeneratedValue;import javax.persistence.Id;

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXvalue -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
吃什么零食,不会长痘痘
抢车位能不能改名字啊?
介绍好的录歌软件
“取舍”与“舍得”有什么区别?
给孩子生病祝福语大全,送给侄女在外旅游的祝
我买的楼房手付十四万还二十年每月还2527我不
DNF在60级的等级上提高等级吗?
上海市民办牧羊神学校地址在什么地方,我要处
QQ号现在的最高等级是多少?他们的QQ号分别是
windows怎么删除创建用户
够味小吃(瓯北双塔店)在什么地方啊,我要过去
微信京东客服在哪里找,微信的客服怎么联系 有
邯郸招聘会在什么时间?
帮忙搜寻西安高新附近的洗车场及租车公司?谢
系统重装没Xp盘,听朋友说直接下个东西,重启
推荐资讯
兩個都很好,我該怎麼選擇?
因为迷信男友和我分开了,我后来也答应他了,
为什么QQ影音1.7不能播放受DRM保护的WMV文件
如果你在追一女生时另一个男生也去追,该怎么
直播间什么意思,花椒直播工会是什么意思?
小D几级学传送月光林地
笔记本什么牌子的好呀.大概在5300到5600价钱
打篮球运球过半场一般用多少步?
麻烦你帮个忙啊
今年黄豆能涨价吗?能涨到多少
671_670公交路过宜兴埠吗?
请教 电信宽带端口
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?