【db2报错】 DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1

一、报错信息

One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by “1” constrains table “TABLE_A” from having duplicate values for the index key…SQLCODE=-803, SQLSTATE=23505

INSERT语句、UPDATE语句或由DELETE语句引起的外键更新中的一个或多个值是无效的,因为主键、唯一约束或由“1”标识的唯一索引约束表“TABLE_A”防止索引键有重复的值。

二、错误原因

数据库报这个错误是因为主键冲突,查看代码后发现这张表使用了自增主键,但是由于种种原因,主键自增在缓存的数字可能变了,于是出现了主键重复的报错。

三、db2自增主键

查看数据库DDL后发现主键使用的是自增,在插入数据时没有指定主键的值,按道理来说会自动设置一个自增的主键。

在这里插入图片描述

三、更新自增主键

首先,查询目前主键的最大值
比如查出来的最大值是19000,那么接下来就设置为19001

select max(ID) from table_a;
alter table table_a alter column ID restart with 19001

执行成功后
在这里插入图片描述
然后insert是不设置主键的值就可以成功新增了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值