当前位置: 首页 > news >正文

Oracle使用序列后提示违反唯一约束---解决办法

1、问题原因分析

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

2、解决方案

2.1 第一步:查询出约束对应的表以及对应字段

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';

2.2第二步:查询字段对应的序列(sequence)的下一次值是多少

-- select 序列名.nextval from dual;select ZHGD_DEVICE_SEQ.nextval from dual;

2.3第三步:查询数据表中对应字段的最大值

-- select max(字段) from 表名;
select max(ID) from ZHGD_DEVICE;

2.4第四步:修改序列值步进大小,更新序列值

-- alter sequence 序列名 increment by 步进值(自己定义即可,需要超过数据库表中对应的最大值);
alter sequence ZHGD_DEVICE_SEQ increment by 200;

2.5第五步:按照步进值将序列值新增,并得到下一个序列值

-- select 序列名.nextval from dual;
select ZHGD_DEVICE_SEQ .nextval from dual;

2.6第六步:恢复序列值步进大小为1

--alter sequence 序列名 increment by 1;
alter sequence ZHGD_DEVICE_SEQ increment by 1;
http://www.lryc.cn/news/434469.html

相关文章:

  • 乐观锁悲观锁
  • Unity面试:什么是UnityEvent?
  • 食品安全管理员考试真题题库及答案
  • 【C++】—— vector 的模拟实现
  • MySQL 查询过慢的优化方法
  • YoloV8修改分类(Classify)的前处理(记录)
  • 半监督学习能否帮助训练更好的模型?
  • VBA 获取字段标题代码轻松搞定
  • C++代码片段
  • Golang | Leetcode Golang题解之第388题文件的最长绝对路径
  • docker打包前端项目
  • 调度器怎么自己写?调度器在实现时需要注意哪些细节?请写一个jvm的调度器?如何在这个调度器中添加多个任务?
  • 创客匠人对话|德国临床营养学家单场发售百万秘笈大公开
  • 开源项目低代码表单FormCreate从Vue2到Vue3升级指南
  • 序偶解释:李冬梅老师书线性表一章第一页
  • 3GPP协议入门——物理层基础(二)
  • Java学习Day41:手刃青背龙!(spring框架之事务)
  • el-image(vue 总)
  • 餐饮「收尸人」,血亏奶茶店……
  • 【Python进阶】学习Python从入门到进阶,详细步骤,就看这一篇。文末附带项目演练!!!
  • OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用
  • HTTP 之 响应头信息(二十三)
  • 智能风扇的全新升级:NRK3603语音芯片识别控制模块的应用
  • 如何通过pSLC技术实现性能与容量的双赢
  • 减速电机的基本结构及用料简介
  • 1688跨境电商接口开放接入,跨境电商的尽头到底谁在赚钱?
  • SpringBoot 增量部署发布
  • java八股!1
  • 【学术会议征稿】2024年智能驾驶与智慧交通国际学术会议(IDST 2024)
  • 2024最全网络安全工程师面试题(附答案)