oracle中违反唯一约束条件_违反约束条件

oracle中违反唯一约束条件_违反约束条件##1.问题原因分析 出现这个问题的原因是插入数据的时候,由于之前没有使用序列插入,而是直接插入了一个比当前序列nextval还大的值,即直接将id写死了。后面再使用序列插入的时候,如果序列小于该值的

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

1.问题原因分析

出现这个问题的原因是插入数据的时候,由于之前没有使用序列插入,而是直接插入了一个比当前序列nextval还大的值,即直接将id写死了。后面再使用序列插入的时候,如果序列小于该值的话,是可以正常插入的,当序列号等于之前通过ID写死的方式插入的ID值时,就会出现这种情况。

2.解决方案

-- 查询出约束对应的表以及对应字段
select a.constraint_name,a.constraint_type,b.column_name,b.table_name
from user_constraints a inner join user_cons_columns b 
on a.table_name = b.table_name
where a.constraint_name = "SYS_C0016709";


--第二步:查询字段对应的序列(sequence)的下一次值是多少
-- select 序列名.nextval from dual;

 select ZHGD_DEVICE_SEQ.nextval from dual;
 
--第三步:查询数据表中对应字段的最大值
-- select max(字段) from 表名;
select max(ID) from ZHGD_DEVICE;
 
--第四步:修改序列值步进大小,更新序列值
-- alter sequence 序列名 increment by 步进值(自己定义即可,需要超过数据库表中对应的最大值);
alter sequence ZHGD_DEVICE_SEQ increment by 200;
 
--第五步:按照步进值将序列值新增,并得到下一个序列值
-- select 序列名.nextval from dual;
select ZHGD_DEVICE_SEQ .nextval from dual;
 
--第六步:恢复序列值步进大小为1
--alter sequence 序列名 increment by 1;
alter sequence ZHGD_DEVICE_SEQ increment by 1;

原文地址:https://www.cnblogs.com/xshangao/archive/2022/09/15/16697025.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4759.html

(0)
上一篇 2023-06-06
下一篇 2023-06-06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注