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

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.kler.cn/a/298513.html

相关文章:

  • 【数据结构】航班查询系统:链表的实际运用
  • 缓存-Redis-常见问题-缓存击穿-永不过期+逻辑过期(全面 易理解)
  • Matplotlib 直方图:数据可视化基础
  • DeepSeek-V3与GPT-4o的对比详解
  • 用户界面软件02
  • 关于Mac使用VSCode连接虚拟机
  • 【人工智能】枢纽:数据驱动洞察引领未来智能系统
  • SFC CSS 功能:深层选择/插槽选择器/动态绑定
  • axios取消请求
  • 【Docker】容器简介和构建镜像
  • 18、Gemini-Pentest-v1
  • Oracle数据库的启动和关闭
  • 【区块链通用服务平台及组件】云链白泽区块链 baas 平台
  • 第142天: 内网安全-权限维持黄金白银票据隐藏账户C2 远控RustDeskGotoHTTP
  • Python-获取excel数据 - 成绩统计
  • Telephony VOLTE配置
  • 高度可定制的电竞鼠标,雷柏VT1 PRO MAX体验
  • ADTEC自动阻抗匹配器维修AMVG-2000-FY AMVG-1000-CD
  • 未来的去中心化网络:Web3与AI的深度融合探讨
  • 【组边际图】:附Origin详细画图流程
  • [笔记]电参数测量的现有方案[进行中...]
  • 分享基于PDF.JS的移动端PDF阅读器代码
  • 二个命令解决docker 拉取镜像超时的问题
  • PDF样本图册转换为一个链接,随时打开无需印刷
  • 元宇宙虚拟展厅是什么?有哪些优势?
  • Qt对话框布局调整