暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在列id自动增长(自增序列)的表手工插入数据处理办法

温故而知新。分享也是温习一种方式。

(之前发布在CSDN), 数据库里有个表,其主键字段的id号是插入数据自动增长的,正常情况是在业务系统平台界面去新增数据的。如果人工在数据库里去增加数据后,那么业务系统程序下次新增数据的时候,不会从表里id最大的数值开始填入,而是以程序上次插入数据的id值开始,也就是数据库最后产生的序列号开始。就会导致id号出现相同的冲突,无法新增数据,报错。因此,需要手工修改序列号起始值。比如id(序列号)列最新值是99,那么下次要从100开始。

假如用户名称 是VOLTEs,就执行以下语句查询序列名:
select * from dba_sequences
where sequence_owner='VOLTEs'


若序列名称是SEQ_NEDEVICE,初始值是9,我插入了数值10-19后,现在要设置初始值为19,Increment By值为:10(19-9)

查询当前序列号:

SELECT DEPT_NO.currval FROM DUAL

不要用 DEPT_NO.nextval



执行以下指令后,下次序列号就从20开始了:
ALTER SEQUENCE 序列名 INCREMENT BY 10 ;


如果新增错了,还可以退回,数值为负值就是退回,执行如下两条指令如下:

ALTER SEQUENCE 序列名 INCREMENT BY -10 ;

SELECT 序列名.NEXTVAL FROM DUAL

执行之后再看又变成9了。


然后还要执行:

ALTER SEQUENCE 序列名 INCREMENT BY 1

让下次每次增加1,而不是继续减少10

最后修改时间:2025-09-06 10:19:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论