事件背景:
为客户部署oracle数据库后需要将老库中的数据导过来,老库的单表数据2W+由于在为新库的表创建主键自增序列时设置的起始值是3000,导致后续客户使用时,在插入数据时抛出数据库java.sql.SQLException:ORA-00001:违反唯一约束条件异常
解决方案:
修改序列起始值:
方法1: 直接删除当前的序列,重新创建。为避免用户正常使用,尽量不要使用这种方式。
方法2:通过Increment By来修改序列起始值,具体步骤如下
1、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 5000;
2、SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;
3、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 1;
SEQ_USER_COMBO:本库中的序列名
5000:表示在原始初始值的基础上增加5000
INCREMENT BY 1:表示自增1
如果不嫌累的话还有一种方法:使用方法2中的第二步进行循环增加
SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;
如果只使用这个语句每执行一次起始值增加1
1、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 5000;
2、SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;
如果在循环执行2之前先执行一次1,那么每次循环增加的值就是5000
创建序列:
create sequence SEQ_USER_COMBO
minvalue 0 --序列最小值
maxvalue 999999999999999999 --序列最大值
start with 3000 ---序列起始值
increment by 1 ---序列自增值
cache 20; ---定义存放序列的内存块的大小,默认为20
删除序列:
drop sequence SEQ_USER_COMBO; ---序列名