Oracle重置序列(不删除重建方式)
2024-08-24 08:37:52
Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译。
不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来。
假设需要修改的序列名:seq_name
1、select seq_name.nextval from dual; //假设得到结果5656 2、 alter sequence seq_name increment by -5655; //注意是-(n-1) 3、 select seq_name.nextval from dual;//再查一遍,走一下,重置为1了 4、 alter sequence seq_name increment by 1;//还原
可以写个存储过程,以下是完整的存储过程,然后调用传参即可:
create or replace procedure seq_reset(v_seqname varchar2) as n number(10);
tsql varchar2(100);
begin
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '|| n;
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
tsql:='alter sequence '||v_seqname||' increment by 1';
execute immediate tsql;
end seq_reset;
最新文章
- Kali Linux 命令集
- JAVA之执行cmd命令
- SQL Server 跨库连接
- iOS 十六进制的相加取反
- jquery mini ui 学习
- PIL库 (Pillow)
- 剑指offer32 整数中1出现的次数(从1到n整数中1出现的次数)
- 获得span里面价值(在特殊情况下 )
- openstack-kilo--issue(十二)openstack-keystone和httpd服务同时占用35357和5000
- 数组的重排序方法reverse()和sort()
- MySQL如何插入测试数据
- jvm类加载器和双亲委派模型
- Java几种建立实例的方法
- Python多线程案例
- 初识Djiango
- DAY4(PYTHON)列表的嵌套,range,for
- TCP/UDP区别
- 插件使用一树形插件---zTree一zTree异步加载
- Python3科学计算库概况
- abap事件。
热门文章
- QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)
- Java学习-018-EXCEL 文件写入实例源代码
- angularJs的工具方法
- Android Service Intent must be explicit的解决方法
- ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试
- 浅谈负载均衡SLB、CLB和综合应用
- ZOOKEEPER解惑
- proguard使用
- Windows 8上使用SQL 2012 Configuration Manager
- App上架审核指南翻译