SQL 数据插入失败,自增ID被占用

数据库有一个表ID使用的是自增长,数据插入失败自增ID会被暂用,这样数据的ID就不是连续的,有什么方法可以让数据ID连续

定义GetMaxID()方法,每次插入就是GetMaxID()+1这样.

插入数据,不管失败或成功,数据库尝试生成一个ID,失败也是存在的,所以想连续不可能的

不要用id自增长,自己在插的时候获取最大的id。这样子有一个缺点,就是有点麻烦,而且还会影响程序速度

你好!要解决这个问题,需要在数据库中创建一个存储过程,在存储过程中先查出该表最后一条记录id,加1后作为本次新插入数据的id。很简单的。

使用同步外加取id最大值+1
实际上最好的方法是UUID而不是自增主键

oracle建议使用sequence,mysql有自增主键属性

丢掉“洪荒级”老师教你的单机单用户设计思想,应该从多用户环境来看待问题。
id不保证连续才是最合理的。

要解决这样的问题,需要在数据库中创建一个存储过程,在存储过程中先查出该表最后一条记录id,加1后作为本次新插入数据的id。很简单的。
存储过程(简单){
获取最后一个ID
}
insert into xxpp(ID) values(存储过程+1)

数据插入失败自增ID会被暂用,用事物回滚可以吗?这样数据库就没有修改,其他情况类似,自定义异常,如果某个条件下发生此异常就回滚,不知道您是不是这个
意思呢。