ORACLE常见报错ORA-00001: 违反唯一约束条件 --解决方法

打印 上一主题 下一主题

主题 1014|帖子 1014|积分 3042

1.问题原因分析

出现这个问题的原因是插入数据的时候,由于之前没有使用序列插入,而是直接插入了一个比当前序列nextval还大的值,即直接将id写死了。后面再使用序列插入的时候,如果序列小于该值的话,是可以正常插入的,当序列号等于之前通过ID写死的方式插入的ID值时,就会出现这种情况。
2.解决方案
  1. -- 查询出约束对应的表以及对应字段
  2. select a.constraint_name,a.constraint_type,b.column_name,b.table_name
  3. from user_constraints a inner join user_cons_columns b
  4. on a.table_name = b.table_name
  5. where a.constraint_name = 'SYS_C0016709';
  6. --第二步:查询字段对应的序列(sequence)的下一次值是多少
  7. -- select 序列名.nextval from dual;
  8. select ZHGD_DEVICE_SEQ.nextval from dual;
  9. --第三步:查询数据表中对应字段的最大值
  10. -- select max(字段) from 表名;
  11. select max(ID) from ZHGD_DEVICE;
  12. --第四步:修改序列值步进大小,更新序列值
  13. -- alter sequence 序列名 increment by 步进值(自己定义即可,需要超过数据库表中对应的最大值);
  14. alter sequence ZHGD_DEVICE_SEQ increment by 200;
  15. --第五步:按照步进值将序列值新增,并得到下一个序列值
  16. -- select 序列名.nextval from dual;
  17. select ZHGD_DEVICE_SEQ .nextval from dual;
  18. --第六步:恢复序列值步进大小为1
  19. --alter sequence 序列名 increment by 1;
  20. alter sequence ZHGD_DEVICE_SEQ increment by 1;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表