Oracle 修改序列的当前值的3种方式
1.情景展示
当我们将数据导入到表中后,为了避免后续数据插入失败,一般情况下,会更改此表使用的序列的开始值。
如何修改?
2.原因分析
使用Navicat的话,是无法对序列的当前值,进行修改的。
小编为大家整理了3种实现方式,一起来看下吧。
3.解决方案
方式一:使用plsql;
打开plsql,找到sequences
找到要修改的序列--》右键--》编辑--》更改:下一个数字的值即可。
方式二:重建序列;
错误方式:
具体步骤是:删除原来的序列,重新创建。
-- 删除序列
DROP SEQUENCE SEQ_META_DATABASE;
-- 重建序列
CREATE SEQUENCE SEQ_META_DATABASE
minvalue 1
maxvalue 9999999999999999999
INCREMENT BY 1
START WITH 20;
其中,start with 后面跟的就是起始值(下次调用此序列时,将会出现的值) 。
方式三:使用sql。
这一个,是本文的重点;
我们由方式一可以知道:通过plsql的可视化操作界面,是可以修改的。
那plsql到底是怎么实现的?一起来看下:
选中序列--》右键--》编辑
第一步:修改起始值;
第二步:点击右下角的“查看SQL”。
说明:
起初,这里的起始值是300,我给它改成了30,实现的效果就是:
将序列的下一个值改成了30,以后序列将会从30往后叠加。
然后,看下面这张图,要实现序列起始值的修改,需要3步。
第一步:更改序列的步长;
alter sequence SEQ_META_THEME_TABLE increment by -271 nocache;
我们需要明白一个前提:
序列的值是怎么来的?
当前值+步长(增量)
所以,我们想要修改序列的当前值,就必须自改序列的增量。
第二步:查询序列值;
select SEQ_META_THEME_TABLE.nextval from dual;
这一步的目的是:改变序列的当前值,让其按照自己预设的增量来完成序列当前值的修改工作。
到这一步,该序列返回的当前值已经改成了300-271=29(下次调用将会返回30)。
第三步:将序列的增量改成1。
alter sequence SEQ_META_THEME_TABLE increment by 1 cache 20;
-- Modify the last number
alter sequence SEQ_META_THEME_TABLE increment by -271 nocache;
select SEQ_META_THEME_TABLE.nextval from dual;
alter sequence SEQ_META_THEME_TABLE increment by 1 cache 20;
不信?我们把SQL复制出来,执行一下。
把序列值变大(30-->300)
关于增量的计算:
如果更改后值(afterNum)>现在序列的下一个值(nextNum),增量(step)=afterNum - nextNum;
如果更改后值(afterNum)<现在序列的下一个值(nextNum),增量(step)=afterNum - nextNum - 1;
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/15899733.html
原文地址:https://www.cnblogs.com/Marydon20170307/p/15899733.html
- 单数据库,多数据库,单实例,多实例不同情况下的数据访问效率测试
- 打造轻量级的实体类数据容器
- “设计应对变化”--实例讲解一个数据同步系统
- TOP语句放到表值函数外,效率异常低下
- 从吉日嘎拉那里学到的……
- 【分享】纯js的n级联动列表框 —— 基于jQuery,支持下拉列表框和列表框,最重要的是n级,当然还有更重要的
- C#中?与??的区别
- 隐藏在程序旮旯中的“安全问题”
- 调用PostgreSQL存储过程,找不到函数名的问题
- C#调用C和C++函数的一点区别
- EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题
- 合并求取分组记录的第一条数据
- 一个脑洞“颇大”的恶搞链接
- SQL 行列转换简单示例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于模型预测结果好坏的几个评价指标
- SpringBoot微服务架构项目--Union社交平台
- 如何衡量前端基建的效能价值?
- mbedtls | 移植mbedtls库到STM32裸机的两种方法
- 实用小技巧 | 用socket玩转http接口
- 深度学习之人脸识别模型--FaceNet
- Java常用的设计模式
- HW防守|应急溯源分析手册汇总篇
- Python进阶(一)
- Python版本的OpenCV安装
- CVE-2020-16875:Microsoft Exchange RCE复现
- 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!
- Python高效编程之88条军规(2):你真的会格式化字符串吗?
- 搭建Typecho博客
- Python开发之Pandas的使用