数据库中如何把主键都减一,或者都减一

这个问题是很偶然发生的。

我的数据库中,有一张表的数据维护错了,本来主键是从0递增的,且数列差值为1.但是到某个数,突然变成了2,于是,到后面一直都是错的,直到有一天才发现。

 

于是乎,我想把值改回去,于是写了一个sql,从错误的那个值开始都减一,没有发生问题。

 

但是,这个值是字典值,会被其他一些数据所引用,所以迫不得已需要改回来。

 

减一没发生问题,但是加一就发生问题了,提示主键重复。

 

于是两种办法:

一、每个主键xi都加上一个很大的数n,且xi+n不存在于主键中,然后xi - n + 1;

 

二、变更主键为另外一个不唯一的值,或者新增一个列值为uuid(),然后把原主键 xi = xi + 1,然后再把主键变回来。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值