【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;
相关推荐
luckys.one2 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
言之。4 小时前
Django中的软删除
数据库·django·sqlite
阿里嘎多哈基米5 小时前
SQL 层面行转列
数据库·sql·状态模式·mapper·行转列
抠脚学代码5 小时前
Ubuntu Qt x64平台搭建 arm64 编译套件
数据库·qt·ubuntu
jakeswang6 小时前
全解MySQL之死锁问题分析、事务隔离与锁机制的底层原理剖析
数据库·mysql
Heliotrope_Sun6 小时前
Redis
数据库·redis·缓存
一成码农6 小时前
MySQL问题7
数据库·mysql
吃饭最爱6 小时前
JUnit技术的核心和用法
数据库·oracle·sqlserver
专注API从业者6 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
雨落Liy6 小时前
SQL 函数从入门到精通:原理、类型、窗口函数与实战指南
数据库·sql