【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;
相关推荐
Hrain-AI7 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
净水深流7 小时前
中央厨房冷链技术实践:多温区改造、WMS落地与IoT温控架构
大数据·数据库·人工智能·冷库冷链
l1t8 小时前
测试DuckDB 2.1的match_recognize模式匹配语句
数据库·duckdb
IpdataCloud9 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
曹牧9 小时前
Java:SQL 注入漏洞
数据库
程序员JerrySUN9 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
oradh10 小时前
Oracle Undo问题总结(ORA-600 [4xxx] 系列错误)
数据库·oracle
达梦数据10 小时前
DMDRS辅助表生成规则与作用
数据库·oracle
‎ദ്ദിᵔ.˛.ᵔ₎10 小时前
MySQL 表约束
数据库·mysql
Doris__HE10 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化