关于 id 自增的问题?

在artisan里面,我重复执行create()这个方法,第二次失败,因为设置了邮箱是唯一的,当我第三次执行create()成功时,发现数据库里的id变为3了。而且只有id为1和id为3的2条数据,这个怎么处理?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8
yema

数据库id自增一般不会发生误差1的行为。是不是你删除了id为2的数据,才会导致第二条的数据的id为3。

6年前 评论

我记得好像是保存出错了,主键也会自增一的

6年前 评论
yema

我刚才百度了一下,数据库还真有这样的行为。如果你的id跳增长对你的业务产生了影响的话,你可以变向的去实现自增长,如果不影响业务逻辑,就没有必要纠结这个。

6年前 评论
yema

还有可以尝试一下事务,看下回滚能否取消Id的自增

6年前 评论

@kevin2011 如何让他保存出错id不自增呢?

6年前 评论

@yema 我的要求是:数据如果没有保存成功,不希望他自增,现在是新增报错了,但是自增了id, 感觉不要用到回滚机制。

6年前 评论

@Martin567 不用回滚的话网上好像还有一些别的处理方式,但感觉不太实用,话说必须要保证id的连续吗?没这必要吧?实在不行就对数据先进行严格的判断先,比如类型长度这些

6年前 评论

你可以使用事物,try catch捕获

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!