Oracle中的主键值和序列中的值对应不上时的处理方式

select max(r.id) maxid from XXX r;

select XXX_SEQ.nextval currentSeq  from dual;

alter sequence XXX_SEQ increment by i;

select XXX_SEQ.nextval from dual;

alter sequence XXX_SEQ increment by 1;  

因为Oracle是不能直接修改序列的下一个值,所以:
上面的XXX和XXX_SEQ换成你要修改的表名和对应的序列名就行。
第三条的i是前面两条SQL查出来数据表当前最大ID和序列当前Last_NUMBER的差值。

你可能感兴趣的:(oracle,数据库)