当前位置:   article > 正文

【Oracle】修改已经存在的序列的当前值_oracle更新序列当前值

oracle更新序列当前值

前情提要

oracle中一般使用序列来实现ID自增。但是oracle中序列维护的没有mysql那么好。只是单存的递增。
比如新建了一个序列,从1开始,每次递增1。此时我向数据库里插入一条id=10的数据。那么在序列查询到10的时候,插入就会报错。
所以比较简单的解决办法就是,让现在序列的起始值>目前id的最大值

修改序列当前的值

oracle对于已经创建序列,没法直接修改当前序列的值。
但是可以使用修改步长的方式,来修改序列当前值。

-- 修改序列的步长
Alter Sequence my_sequence Increment By 100;
-- 查询一次序列
SELECT my_sequence.NEXTVAL as roleId from DUAL;
-- 再将步长修改为1
Alter Sequence my_sequence Increment By 1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

【扩展】序列的其他操作

-- 1.创建序列
CREATE SEQUENCE my_sequence START WITH 1;
-- 2.删除序列
DROP SEQUENCE my_sequence;
-- 3.修改序列起始值,如果序列已经使用(已经通过序列生成过值),oracle不允许直接改变起始值
Alter Sequence my_sequence START WITH 1;
-- 4.修改序列最大值
Alter Sequence my_sequence Maxvalue 1000;
-- 5.启动序列的循环
Alter Sequence my_sequence Cycle;
-- 6.查询数据库里所有的序列
SELECT * FROM ALL_SEQUENCES
WHERE SEQUENCE_OWNER = 'database_name';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/816560
推荐阅读
相关标签
  

闽ICP备14008679号