Oracle - Sequence序列

一、序列说明
    ORACLE 没有自增数据类型,如需生成业务无关的主键列或惟一约束列,可以用 Sequence 序列实现

二、创建序列
CREATE SEQUENCE SEQ_NAME    -- 序列名
MINVALUE 1    -- 定义序列的最小值,系统能产生的最大值为28个9。不设置时默认为 NOMINVALUE,此时递增序列最小值为1,递减为负10的26次方
MAXVALUE 10000    -- 定义序列的最大值,系统能产生的最大值为28个9。不设置时默认为 NOMAXVALUE,此时递增序列最大值为10的27次方,递减为负1
START WITH 1    -- 定义序列产生的第一个值。默认时,升序为最小值开始,降序为最大值开始
INCREMENT BY 1    -- 定义序列的步长。如果省略,则默认为1;如果出现负值,则代表为降序序列
NOCACHE    -- 定义序列不预先缓存值到内存。可以用 CACHE SIZE 来定义缓存的大小,使用缓存在获取时能相对快一些但可能产生跳号
NOCYCLE    -- 定义序列的值达到最大值后不循环。不循环用 NOCYCLE 表示,循环用 CYCLE 指定,默认 NOCYCLE
NOORDER ;    -- 定义序列产生的序列号不需要保证按请求顺序产生,需要使用 ORDER 指定,不需要也可以不定义该参数
三、删除序列
DROP SEQUENCE 用户.序列名;

四、查看序列

SELECT 
    SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG, ORDER_FLAG, CACHE_SIZE, LAST_NUMBER 
FROM DBA_SEQUENCES;
五、查询获取

    -- 查询序列的当前的值
    SELECT SEQ_NAME.CURRVAL FROM DUAL;  -- SEQUENCE创建后需要先NEXTVAL后才能执行CURRVAL

    -- 获取序列的下一个值
    SELECT SEQ_NAME.NEXTVAL FROM DUAL;  -- SEQUENCE会先执行一次步长,然后返回步长后的值

六、修改序列

-- 1. 查看当前的序列值
SELECT SEQ_TEST_1.CURRVAL FROM DUAL;
-- 2. 设置一个新的步长
ALTER SEQUENCE SEQ_TEST_1 INCREMENT BY 100;
-- 3. 获取设置为新步长后的下一个序列值
SELECT SEQ_TEST_1.NEXTVAL FROM DUAL;
-- 4. 修改回旧的步长
ALTER SEQUENCE SEQ_TEST_1 INCREMENT BY 1;
-- 5. 使用旧的步长获取下一个序列值
SELECT SEQ_TEST_1.NEXTVAL FROM DUAL;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值