度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle创建固定长度的自增ID [打印本页]

作者: 张兴康    时间: 2020-3-16 11:49
标题: oracle创建固定长度的自增ID
ORACLE的编号和SQL SERVER的不同。SQL SERVER可以设置一个值为自增。
ORACLE需要先建立一个SEQUENCE,然后用NEXTVAL。

例如,若想生成这样的编码,0001,0002,0003.。。。。。


首先建立一个1-n的整数循环序列,

CREATE SEQUENCE DATE_SEQ
START WITH 1 --起始值(默认为1可省略)
INCREMENT BY 1 --可省略(默认为1可省略)
MAXVALUE 9999 --最大值9999
CYCLE --循环
NOCACHE --不缓存(可避免产生值不连续的情况)
ORDER --保证按次序产生值

示例:
create sequence TEST_ID  
minvalue 1  
maxvalue 9999
start with 1  
increment by 1  
nocache;  


有了1-9999的循环序列,我们就可以
TO_CHAR(DATE_SEQ.NEXTVAL) 先将其转换为字符形式。
然后 LPAD(TO_CHAR(DATE_SEQ.NEXTVAL),4,'0') 对其进行4位加'0'补齐长度。例如2,补齐为0002。

然后加上插入的日期(只要年月)
TO_CHAR(SYSDATE,'YYYYMM')||LPAD(TO_CHAR(DATE_SEQ.NEXTVAL),4,'0') --这样可以实现日期+编码的格式。


作者: 张兴康    时间: 2020-3-16 11:50
沙发自己坐
作者: 陈晓龙    时间: 2020-3-16 20:47
可以,都能写车这么高升的东西!
作者: 王爱东    时间: 2020-3-16 21:04
对头,这个就是SEQUENCE,序列的用法。不错不错
作者: 张军勇    时间: 2020-3-18 17:29
SEQUENCE你们在构建中用到了吗?
作者: 万望    时间: 2020-3-19 00:08
张军勇 发表于 2015-10-18 17:29
SEQUENCE你们在构建中用到了吗?

表示目前没有,不过可以先熟悉熟悉
作者: 万望    时间: 2020-3-19 00:09
这是创建序列吗?yes
作者: 张军勇    时间: 2020-3-19 22:35
在这方面sql server处理起来方便些。
作者: caixuqad    时间: 2020-5-8 17:09

作者: caixuqad    时间: 2020-5-9 17:06

作者: 张兴康    时间: 2020-5-12 18:14
caixuqad 发表于 2017-6-9 17:06


作者: caixuqad    时间: 2020-5-20 18:05





欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://p.delit.cn/) Powered by Discuz! X3.2