创建
直接上sql
create sequence name_seq #创建名为NAME_SEQ的序列
minvalue 1 #最小值为1
maxvalue 999999 #最大值为999999
start with 1 #从1开始
increment by 1 #每次增长1
nocycle #不循环
nocache; #不使用缓存(使用缓存一次可以生成多个,用的时候就先从 缓存中取)
使用
select name_seq.nextval from dual #查询序列下一个值,dual只是一个虚表,没有意义
select name_seq.currvalfrom dual #查询序列当前值,需要注意的是如果这个序列没有用过nextval那么序列就没有当前值,这条语句会报错。
插入时:
insert into table(table.id,table.code,tablie.field...)
values(
name_seq.nextval,
'F' || lpad(name_seq.nextval,6,'0'),
fieldContent
)
插入时name_seq.nextval可以直接作为值使用,同一条sql语句的name_seq.nextval值是一样的。'F' || lpad(name_seq.nextval,6,'0')将取出来的序列值用‘0’向左填充为6位,并拼接一个‘F’在开头。比如nextval序列值为1,那么'F' || lpad(name_seq.nextval,6,'0')就是F000001。
这样,插入时就可以快速根据序列插入主键和一些特定的code。