公司产品升级,涉及到历史数据迁移。
完成迁移后,使用过程中发现有个功能无法使用,检查dubbo的标准服务和jboss应用发现有个序列的执行报错。
违反唯一约束 vie_zjyy.SYS_C00548407(这个序列data_mark_sequence)
此序列是往data_mark_info表中插入数据,而此表的id是主键,已经使用到了48000+
所以直接修改序列增长的值:
ALTER SEQUENCE data_mark_sequence INCREMENT BY 50000;
查询下一个序列值:
SELECT data_mark_sequence.NEXTVAL FROM DUAL;
查询当前序列值:
SELECT data_mark_sequence.CURRVAL FROM DUAL;
再次修改成增长为1:
ALTER SEQUENCE data_mark_sequence INCREMENT BY 1;
补充:
序列创建:
create sequence data_mark_sequence
minvalue 1 --序列最小值
maxvalue 999999999999999999 --序列最大值
start with 5000 ---序列起始值
increment by 1 ---序列自增值
cache 20; ---定义存放序列的内存块的大小,默认为20
删除序列:
drop sequence data_mark_sequence; ---序列名
所以涉及到历史数据迁移的话,可以直接初始化序列的初始值,或者手动吧序列的值增加到使用的最大值+1,即可避免这类问题的发生。