ora-00001违反唯一约束

ora-00001违反唯一约束

报错日志:

org.springframework.dao.DuplicateKeyException:
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (RPA_USER.PK_ACCEPTED_WITNESSVIDEO)

### The error may exist in com/bairuitech/anychat/iaccount/dao/TAcceptedWitnessvideoMapper.java (best guess)
### The error may involve com.bairuitech.anychat.iaccount.dao.TAcceptedWitnessvideoMapper.insert-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO T_ACCEPTED_WITNESSVIDEO  ( ID,      SRV_STREAM, CUST_NAME,   CUST_STREAM, SYS_PATH,   SRV_ID, CUST_ID,  SRV_NAME )  VALUES  ( ?,      ?, ?,   ?, ?,   ?, ?,  ? )
### Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (RPA_USER.PK_ACCEPTED_WITNESSVIDEO)

; ORA-00001: 违反唯一约束条件 (RPA_USER.PK_ACCEPTED_WITNESSVIDEO)
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (RPA_USER.PK_ACCEPTED_WITNESSVIDEO)

原因:

在表中要求唯一的值发生了冲突,比如现在id的值已经增长到了100,序列的下一个值是24,Oracle执行插入时,生成的id是24已经存在了

解决方法:

修改该表的下一个序列值大于当前最大的唯一值

步骤:

1.可以先看是哪张表哪个字段发生的冲突(一般是主键id):

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='PK_ACCEPTED_WITNESSVIDEO'

2.查询Oracle数据库所有序列:

select * from USER_SEQUENCES;

3.查询指定数据库表序列id参数值(倒序)

select max(to_number(t.表id)) from 表名(所报异常查询表)t

4.查询当前表值的下一个序列值(对比上一步的查询结果)

SELECT  序列名.NEXTVAL FROM dual;    ---执行后,序列会自增

5.修改序列的值的增长值:

alter sequence 序列名 increment BY X;    ----X为正数负数都可以

6.查询序列的下一个值:

SELECT  序列名.NEXTVAL FROM dual;  --查看是否已经大于id的最大值

7.重新将序列的值的增长值设为1

alter sequence 序列名 increment BY 1;  ---序列自增设为1
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值