【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;
相关推荐
zzc921几秒前
MATLAB仿真生成无线通信网络拓扑推理数据集
开发语言·网络·数据库·人工智能·python·深度学习·matlab
未来之窗软件服务21 分钟前
JAVASCRIPT 前端数据库-V1--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟数据库
LjQ204029 分钟前
网络爬虫一课一得
开发语言·数据库·python·网络爬虫
烙印60134 分钟前
MyBatis原理剖析(二)
java·数据库·mybatis
RestCloud35 分钟前
如何通过ETLCloud实现跨系统数据同步?
数据库·数据仓库·mysql·etl·数据处理·数据同步·集成平台
你是狒狒吗36 分钟前
TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
java·开发语言·数据库
Channing Lewis2 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠2 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT2 小时前
每日八股文6.3
数据库·sql
行云流水行云流水2 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库