ORACLE: sequence修改当前值的说明
问题记录:数据库中一张表的数据有2个数据来源:源头一和源头二。表中数据主键是通过序列生成的,但是这两个数据来源生成数据时主键使用的sequence 不同。平时基本上通过源头一往表中生成插入数据,但今天有条信息源头一中没有,所以业务想通过源头二将这条信息手维进来,在新增时提示报错。报错信息为违反主键约束,导致数据插入不进去。
处理方法: 由于源头二为公共源头,所以决定修改源头一生成主键时使用的sequence 。使源头一和源头二生成数据主键时使用的sequence 相同。 同时将源头二的sequence 当前值刷到表中最大的id+20。
在PLSQL 中执行 SQL:
ALTER SEQUENCE my_sequence INCREMENT BY 1 START WITH 151520;
执行报错提示:ORA-02283 cannot alter starting sequence number。
修改SQL 后:
ALTER SEQUENCE my_sequence INCREMENT BY 1 restart start with 151520;
成功刷新sequence当前值。
在此做个记录,方便遇到相同的问题查找。