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

前情提要

在oracle中一般使用序列来实现ID自增。但是oracle中序列维护的没有mysql那么好。只是单存的递增。

比如新建了一个序列,从1开始,每次递增1。此时我向数据库里插入一条id=10的数据。那么在序列查询到10的时候,插入就会报错。

所以比较简单的解决办法就是,让现在序列的起始值>目前id的最大值。

修改序列当前的值

oracle对于已经创建序列,没法直接修改当前序列的值。

但是可以使用修改步长的方式,来修改序列当前值。

sql 复制代码
-- 修改序列的步长
Alter Sequence my_sequence Increment By 100;
-- 查询一次序列
SELECT my_sequence.NEXTVAL as roleId from DUAL;
-- 再将步长修改为1
Alter Sequence my_sequence Increment By 1;

【扩展】序列的其他操作

sql 复制代码
-- 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;
相关推荐
不爱写程序的东方不败1 分钟前
MySQL出现慢查询或者主从延迟的问题,怎么做根因分析?
数据库·mysql
Polar__Star8 分钟前
Golang bcrypt如何加密密码_Golang密码加密教程【收藏】
jvm·数据库·python
澄澈青空~29 分钟前
有一个叫R2C,也有一个叫G2C
java·数据库·人工智能·c#
weixin_5860614631 分钟前
如何用 event.composedPath 获取事件触发经过的所有节点
jvm·数据库·python
weixin_4087177742 分钟前
如何用 Iterator.from 将类数组转化为具备现代方法的迭代器
jvm·数据库·python
努力努力再努力wz43 分钟前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql
深念Y1 小时前
图数据库 vs 向量数据库:AI时代的两个“最强大脑”
数据库·人工智能·neo4j·图论··向量·rag
2301_782659181 小时前
SQL视图能否用于数据仓库模型_雪花模型与视图构建
jvm·数据库·python
m0_377618231 小时前
CSS如何让文字超出两行显示省略号_使用line-clamp属性限制
jvm·数据库·python
m0_743623921 小时前
HTML5中LocalStorage存储用户自定义快捷键配置
jvm·数据库·python