oracle插入数据时解决和旧数据id的冲突

Posted wdnnccey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle插入数据时解决和旧数据id的冲突相关的知识,希望对你有一定的参考价值。

我们在使用oracle创建一个主键的时候需要让他自增, 但是他跟mysql不同,需要创建序列,具体看下面:

可以删除之前创建的sequence,我们在重新创建一个:

DROP SEQUENCE SJGXQK_sequence; --删除

create sequence SJGXQK_sequence  --( SJGXQK_sequence,这个代表的是你的序列的名称)
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --cache 可以用来提高序列值的获取速度,但有可能会浪费一些序列号,应该根据实际情况来设置 cache 的大小。 这个具体我也不清楚是怎么用的,参考别人分享的,哈哈

 

然后查询下:

select SJGXQK_sequence.nextval from dual; 看看他下一个自动插入的id是多少?

 

有可能结果值就是nextval =1; 这个意思就是他会从“1”开始自动插入id。

在这个之前我们可能有老数据存在, 这个id并不一定是从1开始的,有可能已经排序到了10、20.

这个时候我们需要更改下他的起始值:

alter sequence SJGXQK_sequence increment by 14;(是从14开始继续增加,这个14是根据自己的需求来定的)

alter sequence SJGXQK_sequence increment by 1;(每次自增一位)

 

如此以后, 这样他们就不会在提示我们:违反唯一约束条件了 哈哈哈哈 ~ 

 

 

欢迎转载,共勉。

end。

 






以上是关于oracle插入数据时解决和旧数据id的冲突的主要内容,如果未能解决你的问题,请参考以下文章

jdbc 批处理插入数据库 每100条提交一次,有余数时如何解决?

PostgreSql INSERT 插入数据判断数据是否存在,存在则更新,不存在则插入

PostgreSql INSERT 插入数据判断数据是否存在,存在则更新,不存在则插入

多个用户同时向oracle中一个表插入数据,经常出现主键冲突,主键是通过sequence获得的

oracle,FORM,删除数据时,只能按插入的顺序删除,才不会报错。(FRM 40654 记录已被其他使用者更新 )

Oracle如何计算插入plsql块中的总行数